草庐IT

vector_c

全部标签

c++ - 为什么编译器允许在 C++ 中使用 vector.begin()=vector.end()?

在学习C++中的迭代器时,我尝试了以下方法:#includeintmain(){std::vectora;a.end()=a.begin();//Whyisthisevenallowedbythecompiler?}我错过了什么? 最佳答案 如果例如函数结束将返回一个指针,那将是不可能的。例如这段代码不会被编译inta[]={1,2,3};std::end(a)=std::begin(a);GCC问题error:lvaluerequiredasleftoperandofassignmentstd::end(a)=std::begin

C++ std::vector::data 为什么返回的指针索引和 vector 索引不匹配?

关闭。这个问题是notreproducibleorwascausedbytypos.它目前不接受答案。这个问题是由于错别字或无法再重现的问题引起的。虽然类似的问题可能是on-topic在这里,这个问题的解决方式不太可能帮助future的读者。关闭5年前。Improvethisquestion我在http://www.cplusplus.com/reference/vector/vector/data/中找到了一个std::vector的例子.//vector::data#include#includeintmain(){std::vectormyvector(5);int*p=myve

c++ - 如何将 boost 线程添加到 vector

我有这样的不正确的东西:vectorvec;for(intagent=1;agent也许我应该在vector中添加指向boost::thread的指针,但是我不知道如何添加动态分配的线程,我应该怎么做才能使它工作?谢谢。 最佳答案 您必须有一个支持移动语义的编译器才能使您的代码正常工作,或使用vector>使用如下代码:vec.push_back(make_shared(sellTickets,agent,numTickets/numAgents));或使用boost::thread_group.

c++ - 如何过滤或 "grep"C++ vector ?

我有一个vector并想要另一个vector只包含那些满足一些简单标准的MyTypes,例如某个数据成员等于某物。解决此问题的最佳方法是什么? 最佳答案 使用copy_if:#include//forcopy_if#include//forback_inserterstd::vectorv2;std::copy_if(v1.begin(),v1.end(),std::back_inserter(v2),[](MyTypeconst&x){returnsimple_citerion(x);});

c++ - 给定点 vector (可能乱序),找到多边形(不是凸包)

我目前有一个点vectorvectorcorners;我之前存储给定多边形角点的位置。鉴于此,我确信这些点形成了一个不包含任何自相交边的简单多边形。然而,在存储这些顶点的过程中,它们相互连接的顺序并没有被保留。我现在有一个函数,给定一个点vector,将它们连接起来并绘制一个闭合图形。但是,我需要按照需要连接的顺序为该函数提供点序列。任何人都可以建议我可以按正确顺序对这些点进行排序的方法吗?它们形成一个非常简单的凹多边形,而不是凸包。在所有(7)个点中找到中心点的算法也会有所帮助:) 最佳答案 凹多边形没有唯一解:凸多边形可以唯一地

c++ - vector 指针位置保证?

假设我有一个整数vector,std::vectornumbers;填充了一堆值,然后我说这样做(条目存在于43)int*oneNumber=&numbers[43];是否保证oneNumber始终指向索引43处的int,即使我将数字调整为类似numbers.resize(46)的大小?我不是100%确定这里的预期行为是什么,我知道vector保证是连续的,但不确定这种连续性是否也意味着vector中的所有索引在其整个生命周期中都将保持在同一个位置。 最佳答案 IsoneNumberguaranteedtoalwaysbepoint

c++ - 如何初始化指针 vector

很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visitthehelpcenter.关闭10年前。我正在编写一个C++程序,我需要初始化一个指针vector。我知道如何初始化一个vector,但如果有人能告诉我如何将它初始化为一个充满指针的vector,那就太好了!

c++ - 在 vector 中找到最近的点

给定一个包含多个值的排序vector,如下例所示:std::vectorf;f.pushback(10);f.pushback(100);f.pushback(1000);f.pushback(10000);我正在寻找最优雅的方法来检索任何双d与其紧邻的两个值。例如,给定值“45”,我希望返回“10”和“100”。我正在查看lower_bound和upper_bound,但它们不符合我的要求。你能帮忙吗?编辑:我决定发布我自己的答案,因为它是我在该线程中获得的所有有用答案的综合体。我对那些我认为最有帮助的答案投了票。谢谢大家,戴夫 最佳答案

c++ - 有没有办法指定嵌套的 STL vector C++ 的维度?

我知道vector可以构造成预定义的大小vectorfoo(4);但是有没有办法指定嵌套vector的维度呢?vector>bar(4);假设我想要一个大小为4的vector,其中包含大小为4的vector...就像一个4x4多维整数数组? 最佳答案 thatconstructor的第二个参数是初始化的值。现在你得到了4个默认构建的vector。用一个更简单的一维示例来说明://4intsinitializedto0vectorv1(4);//*exactly*thesameasabove,thisiswhatthecompiler

c++ - std::vector 元素初始化

std::vectorv1(1000);std::vector>v2(1000);std::vector::const_iterator>v3(1000);这3个vector的元素是如何初始化的?关于int,我测试了一下,看到所有元素都变成了0,这个标准吗?我相信基元仍然是未定义的。我创建了一个包含300000000个元素的vector,给出非零值,删除它并重新创建它,以避免为了数据安全而清除操作系统内存。重建vector的元素也为0。迭代器呢?默认构造函数是否有初始值(0)或初始值未定义?当我检查这个时,迭代器指向0,但这可以是操作系统当我创建一个特殊对象来跟踪构造函数时,我看到对于