草庐IT

stdvector

全部标签

c++ - vector 的 vector 是否可以因为其中一个元素被重新分配而被重新分配?

假设我有一个vector的vector:vector>table;我知道如果vector没有足够的容量,它会被重新分配。我想知道如果我这样做是否有可能重新分配vector表:table[i].resize(1000);是否有可能table[i]的重新分配也会重新分配table? 最佳答案 没有。这不会导致在table中重新分配。在table上调用的唯一运算符/函数是[]运算符,它promise恒定时间。如果发生重新分配,这将违反恒定时间promise。之所以可以更改子vector(table[i])的vector大小而不需要在顶级v

c++ - 函数返回对 vector 元素的引用

我不知道如何返回对vector元素的引用。[]和at()正在返回引用,不是吗?但是当我尝试以下操作时,它不会编译。我正在使用VisualC++,它给出了cannotconvertfrom'constfloat'to'float&错误。T&GetElement(size_tx)const{return_vector.at(x);}GetElement是方法,_vector是成员变量。 最佳答案 这不会编译,因为您试图返回对vector元素的非常量引用,该元素本身是const。vector是const的原因是您的成员函数被声明为cons

c++ - 通过赋值运算符插入索引处的 std::vector

我是C++的新手,很好奇这是否是插入std::vector的首选方式std::vectormyVector;voidsetAt(intx,Object_I_madeupo){myVector[x]=o;}//setthearraylocationatxtobeo.我问是因为我看到很多关于使用push_back或高度困惑的insert()的事情。这种类似Java的方式有效吗?我宁愿这样做... 最佳答案 myVector[x]=o;只有当x时它才是明确定义的.否则,它会调用未定义的行为,因为在这种情况下,它会尝试访问vector边界之

c++ - 从 C++ 容器中移除对象而不删除它们

我正在使用C++stdvector来存储渲染对象以实现简单的场景图。我需要能够在运行时从场景图中添加和删除渲染对象。添加不是问题,对于删除:阅读文档vector和其他C++容器似乎在弹出对象时调用了它们的析构函数。这不是我需要的,因为我希望稍后能够将这些对象重新添加到渲染循环中。这个问题的可能解决方案是什么?我忘记提及的重要细节-我正在使用指向渲染对象的指针vector。 最佳答案 您似乎对对象实例的基本概念感到困惑。当您向vector添加某些内容时,您不会将其移动到其中,而是复制它:vectorvec;strings;vec.pu

c++ - 为什么在向类内的数据 vector 插入元素时出现段错误?

我在vector中插入数据时收到段错误。我认为vector没有分配。我不想保留大小。怎么做?classA{private:structdata{intx;inty;};std::vectorSet;public:voidinsert(){Set[0].x=5;Set[0].y=6;}};Aa;a.insert();//SegmentationFault 最佳答案 使用std::vector::push_back().访问第一个元素(Set[0])是未定义的行为。默认构建的vector是空的。

c++ - 关于填充 vector 的不同方法

我可以想到三种填充std::vector的方法假设我们有vectorv(100,0);然后我希望它保持(1,1,1)。我们可以做到:v.clear();v.resize(3,1);或者v=vector(3,1);而且我学会了另一种方法:vector(3,1).swap(v);第一个问题是:它们中的任何一个是最好的方法吗?第二个问题:假设v是在main函数之外声明的。根据这个answer,内存将分配在数据段。如果我使用第二种或第三种方法,内存会分配在堆栈上吗? 最佳答案 你如何使用vector的成员来完成这项任务?std::vecto

c++ - C++11 中的 vector <字符> VS vector < bool >

关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭5年前。Improvethisquestion我们为什么要使用vector而不是vector?vector是什么原因更快?

c++ - 如何有效地将 std::vector<char> 复制到 std::string

这个问题是这个Howtoefficientlycopyastd::stringintoavector的反面我通常以这种方式复制vector(空终止字符串)std::strings((char*)&v[0]);或者(如果字符串已经被声明)像这样s=(char*)&v[0];它完成了工作,但也许还有更好的方法。编辑C风格的转换很丑陋,有人告诉我这又如何s=reinterpret_cast(&vo[0]); 最佳答案 只需使用迭代器构造函数:std::strings(v.begin(),v.end());(编辑):或者使用char-poi

c++ - std::vector::data() 是否通过 move 保留?

这个问题在这里已经有了答案:关闭9年前。PossibleDuplicate:Doesmovingavectorinvalidateiterators?考虑以下代码:std::vectorprepare(T*&data){std::vectorbuffer;//Fillinbuffer.data=buffer.data();returnbuffer;}...T*data;autovec=prepare(data);//line12是否有可能vec.data()!=data在第12行?同样,std::vectorbuffer;//...Fillinbuffer...T*data=buffe

c++ - 用 boost::spirit 解析成一个 vector<vector<double>>

我的目的是将逗号分隔的值列表解析为嵌套vector。这个列表是二维的。基本问题是:是否可以用boost::spirit解析成vector的vector?类似于“牵引力”下的表格:''RPM0,5000,10000,15000,20000,25000''Temp'-40.,0.,20.,40.''Traction200.,175.,170.,165.,160.,150.200.,175.,170.,165.,160.,150.165.,165.,160.,155.,145.,145.160.,155.,150.,145.,145.,140.'下一步,我想读入4维数据,但目前我正在努力处理