草庐IT

vector_tostr

全部标签

c++ - 从 std::vector 的开头移除

关闭。这个问题需要debuggingdetails.它目前不接受答案。编辑问题以包含desiredbehavior,aspecificproblemorerror,andtheshortestcodenecessarytoreproducetheproblem.这将有助于其他人回答问题。关闭6年前。Improvethisquestion我有一个具有以下数据结构的vectorstructRule{intm_id=-1;std::wstringname;doubleangle;};std::vector&topPriorityRules;我正在使用删除vector的第一个元素topPrio

c++ - std::vector 的一个小问题,并在遍历它时更改集合

这个循环在运行时改变迭代器:std::vectorc;c.push_back(1);c.push_back(2);std::vector::iteratoriter=c.begin();std::vector::iteratorendIter=c.end();while(iter!=endIter){std::cout它不起作用,因为:Iteratorsandreferencestotheerasedelementsandtotheelementsbetweenthemandtheendofthecontainerareinvalidated.Past-the-enditeratori

c++ - 将 vector 元素移动到 vector 的后面

有没有比删除元素并将其重新添加到后面更好的方法(更快或使用更少的代码符号)?templatevoidmoveItemToBack(std::vector&v,size_titemIndex){Ttmp(v[itemIndex]);v.erase(v.begin()+itemIndex);v.push_back(tmp);} 最佳答案 您可以使用std::rotate执行此操作来自标准库。由于这不会改变vector大小,因此也不会触发重新分配。你的函数看起来像这样:templatevoidmoveItemToBack(std::vec

c++ - 将一行 cv::Mat 转换为 std::vector

我有一个相当简单的问题:如何获取一行cv::Mat并获取std::vector中的所有数据?cv::Mat包含doubles(就问题而言,它可以是任何简单的数据类型)。浏览OpenCV文档非常困惑,除非我将页面添加为书签我无法通过谷歌搜索两次找到文档页面,其中的内容太多而且不容易导航。我找到了访问Matrix元素的cv::Mat::at(..),但我记得COpenCV至少有3个访问元素的不同方式,所有这些都用于不同的目的......不记得用于什么:/因此,虽然逐个元素地复制Matrix肯定会奏效,但我正在寻找一种更高效并且如果可能的话更优雅而不是每一行的for循环。

c++ - 将短列表合并为长 vector 的算法

我有一个稀疏矩阵类,其非零值和相应的列索引按行顺序存储在基本上类似于STLvector的容器中。它们可能有未使用的容量,比如vector;要插入/删除元素,必须移动现有元素。假设我有一个操作,insert_erase_replace,或者简称为ier。ier可以执行以下操作,给定位置p、列索引j和值v:如果v==0,ier删除p处的条目并左移所有后续条目。如果v!=0,并且j已经存在于p中,ier替换单元格内容在p和v。如果v!=0,并且j不在p中,ier插入条目v和p处的列索引j右移所有后续条目后。所以所有这些都是微不足道的。现在假设我有ier2,它做同样的事情,除了它需要一个包含多

C++ 使用指向非 const 的指针编写 const vector

我正在编写一个CustomVector类,使用标准vector在内部存储数据:templateclassCustomVector{friendclassCustomVector_ref;public:...private:std::vector_data;};然后,为了从CustomVector中提取子vector,我使用了一个类来存储指向每个数据元素的指针:templateclassCustomVector_ref{public://ReturnsthevaluestoredinCustomVector//andpointed-toby_data_refT&operator[](si

c++ - 通过 const_cast 修改 const std::vector<T> 的元素

下面的程序是否有未定义的行为?#include#includestructFoo{conststd::vectorx;};intmain(){std::vectorv={1,2,3};autof=newFoo{v};const_cast(f->x[1])=42;//Legal?std::coutx[1]请注意,它不是使用const_cast从f->x中剥离常量,而是从f->中剥离常量x[x],大概由一个单独的数组表示。或者是否允许翻译假定f->x[1]在创建后是不可变的? 最佳答案 您的示例中没有未定义的行为。上面的代码不会调用未定

c++ - 拥有指向保留 vector 元素的指针是否合法?

这个问题在这里已经有了答案:Usestd::vector::dataafterreserve(4个答案)关闭去年。我很好奇这种事情是否合法:std::vectorvec;vec.reserve(10);some_class_type*ptr=vec.data()+3;//thatobjectdoesn'texistyet请注意,我并不是要访问指向的值。这是标准关于data()的说法,但我不确定它是否相关:Returns:Apointersuchthat[data(),data()+size())isavalidrange.Foranon-emptyvector,data()==&fro

C++ std::vector initializer_list 重载歧义 (g++/clang++)

考虑以下代码:#include#defineBROKENclassVar{public:#ifdefBROKENtemplateVar(Tx):value(x){}#elseVar(intx):value(x){}#endifintvalue;};classClass{public:Class(std::vectorarg):v{arg}{}std::vectorv;};无论BROKEN是否被定义,Clang++(7.0.1)编译它没有错误,但是如果BROKEN被定义,g++(8.2.1)会引发错误:main.cpp:9:20:error:cannotconvert‘std::vect

c++ - std::vector 比 std::unordered_set 更快?

在我的自定义物理引擎中,最大的瓶颈是从空间分区(二维网格)获取所有物体并返回仅包含指向物体的唯一指针的集合的方法。templateboolcontains(constT&mContainer,constV&mValue){returnstd::find(std::begin(mContainer),std::end(mContainer),mValue)!=std::end(mContainer);}constvector&GridInfo::getBodiesToCheck(){bodiesToCheck.clear();for(auto&query:queries)for(auto