草庐IT

vector_tostr

全部标签

c++ - std::vector 与 std::list 与 std::slist 的相对性能?

对于一个不需要随机访问列表元素的简单链表,使用std::list代替std是否有任何显着优势(性能或其他方面)::vector?如果需要向后遍历,在遍历其元素之前使用std::slist和reverse()列表会更有效吗? 最佳答案 像往常一样,性能问题的最佳答案是profile您的用例的两种实现,看看哪个更快。一般来说,如果你有插入到数据结构中(除了最后),那么vector可能会更慢,否则在大多数情况下vector预计会执行如果仅适用于datalocalityissues,则优于list,这意味着如果数据集中相邻的两个元素在内存中

c++ - 清理 STL 列表/指针 vector

为了安全地清理std::vector或std::list指针,你能想到的最短的C++block是什么?(假设你必须在指针上调用delete?)listfoo_list;我宁愿不使用Boost或用智能指针包装我的指针。 最佳答案 对于std::list使用:while(!foo.empty())deletefoo.front(),foo.pop_front();对于std::vector使用:while(!bar.empty())deletebar.back(),bar.pop_back();不知道我为什么选择front而不是back

c++ - 使用 std::vector 作为简单缓冲区是一种好习惯吗?

我有一个应用程序正在对一些图像进行一些处理。鉴于我知道宽度/高度/格式等(我知道),并且正在考虑定义一个缓冲区来存储像素数据:然后,我不是在unsignedchar*上使用new和delete[]并单独记录缓冲区大小,而是我正在考虑使用std::vector来简化事情。所以我会像这样声明我的类(class):#includeclassMyClass{//...etc....public:virtualvoidOnImageReceived(unsignedchar*pPixels,unsignedintuPixelCount);private:std::vectorm_pImageBu

c++ - 寻找类似 C++ STL 的 vector 类但使用堆栈存储

在我自己写之前,我会问你们所有人。我正在寻找一个几乎完全像STLvector但将数据存储到堆栈上的数组中的C++类。某种STL分配器类也可以工作,但我试图避免任何类型的堆,甚至是静态分配的每线程堆(尽管其中一个是我的第二选择)。堆栈效率更高。它几乎需要替换当前使用vector的代码。对于我自己要写的东西,我在想这样的事情:charbuffer[4096];stack_vectormatches(buffer,sizeof(buffer));或者该类可以在内部分配缓冲区空间。然后它看起来像:stack_vectormatches;我在想,如果空间不足,它会抛出std::bad_alloc

c++ - vector 的 vector 来创建矩阵

我正在尝试输入二维矩阵的维度。然后使用用户输入来填充这个矩阵。我尝试这样做的方法是通过vector(vector的vector)。但是每当我尝试读入数据并将其附加到矩阵时都会遇到一些错误。//cin>>CC;cin>>RR;alreadydonevector>matrix;for(inti=0;i>matrix[i][j];}}每当我尝试这样做时,它都会给我一个下标超出范围的错误。有什么建议吗? 最佳答案 在访问任何元素之前,您必须将vector的vector初始化为适当的大小。你可以这样做://assumesusingstd::v

c++ - 对结构 vector 进行排序

这个问题在这里已经有了答案:Sortingavectorofcustomobjects(14个回答)关闭9年前。我有一个vectorinfo在哪里data定义为:structdata{stringword;intnumber;};我需要排序info通过字串的长度。有没有快速简单的方法? 最佳答案 使用比较函数:boolcompareByLength(constdata&a,constdata&b){returna.word.size()然后使用std::sort在标题#include:std::sort(info.begin(),i

c++ - 如何从指向 C++ 中 vector 的指针访问 vector 的内容?

我有一个指向vector的指针。那么,如何通过指针读取vector的内容呢? 最佳答案 有很多解决方案,我想出了几个:intmain(intnArgs,char**vArgs){vector*v=newvector(10);v->at(2);//Retrieveusingpointertomemberv->operator[](2);//Retrieveusingpointertooperatormemberv->size();//Retrievesizevector&vr=*v;//Createareferencevr[2];//

每个 C++,从 vector 元素中提取

我正在尝试对攻击vector进行foreach,每次攻击都有一个唯一ID,例如1-3。类方法接受1-3的键盘输入。我正在尝试使用foreach来遍历我在m_attack中的元素,以查看数字是否匹配,如果匹配...做点什么。我看到的问题是这样的:a'foreach'statementcannotoperateonanexpressionoftype"std::vector我是不是完全错了,我有C#经验并且是我的基础,任何帮助将不胜感激。我的代码如下:在标题中vectorm_attack;在类里面intPlayer::useAttack(intinput){foreach(Attack*a

c++ - std::vector、默认构造、C++11 和重大更改

我今天遇到了一个非常微妙的问题,我想听听你的意见。考虑以下花园式的shared-body-idiom类:structS{S():p_impl(newimpl){}private:structimpl;boost::shared_ptrp_impl;};当您尝试通过以下方式将它们放入vector时,就会出现乐趣:std::vectorv(42);现在,至少在MSVC8中,v中的所有元素共享同一个impl成员。实际上,造成这种情况的是vector构造函数:templateclassvector{vector(size_tn,constT&x=T(),constA&a=A());...};在

c++ - 容量是否复制到 vector 中?

取以下代码:std::vectora;a.reserve(65536);std::vectorb(a);//NOTE:bisconstructedfromaa.reserve(65536);//noreallocationb.reserve(65536);容量是否被复制?最后一行会重新分配吗?标准对此有任何说明还是保持沉默? 最佳答案 Iscapacitycopied?实际上,没有。我在ClangandGCC上在线测试过以及MSVC他们都没有复制容量。Willtherebeareallocationonthelastline?如果容