草庐IT

vector_tostr

全部标签

c++ - C++ 中的稀疏 vector ?

关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于StackOverflow来说是偏离主题的,因为它们往往会吸引自以为是的答案和垃圾邮件。相反,describetheproblem以及迄今为止为解决该问题所做的工作。关闭8年前。Improvethisquestion我有一些代码,使用类vector,我想用一个实现稀疏vector的vector来实现(即,不是记录vector长度数组中的元素,包括0,它只包括非查找表中的零表)。C++中是否有任何稀疏vector类使用与vector相同的接口(int

c++ - vector 索引访问与迭代器访问的效率

我有问题要纠正我对使用索引访问(使用运算符[])或使用迭代器访问vector元素的效率的理解。我的理解是“迭代器”比“索引访问”更有效率。(我还认为vector::end()比vector::size()更有效)。现在我写了示例代码来测量它(在Windows7下使用Cygwin,使用g++4.5.3)索引访问循环版本(以前标记为随机访问):intmain(){std::vectorvec(10000000);size_tvalue=0;for(size_tx=0;x迭代器循环代码是这样的:for(std::vector::iteratoriter=vec.begin();iter!=v

c++ - 在调用 vector::assign() 之前调用 vector::reserve() 会更好吗?

我知道使用“reserve”以避免不必要的重新分配是一种很好的做法(EffectiveSTL的第14项):std::vectorv1;v1.reserve(1000);for(inti=0;i当您调用assign时是否适用相同的规则?std::vectorv2;//v2.reserve(v1.size());//Bettertodothis?v2.assign(v1.begin(),v1.end()); 最佳答案 如果v1是std::vector你真的不需要它,因为编译器/STL知道在v2(并且将在复制实际数据之前保留本身所需的数量

c++ - c std::vector 一分为二

是否有一种简单且运行时高效的方法可以在C++中采用std::vector并将其分成两半分成另外两个vector?因为现在我正在这样做:std::vectorv1,v2;for(inti=0;i它在O(n)时间内运行,这是我必须经常执行的操作。那么有没有更好的办法呢? 最佳答案 如果你真的需要2个vector,并且你不能在评论中使用GMan的建议://wherev1isyouroriginalvectorstd::vectorv2(std::make_move_iterator(v1.begin()+v1.size()/2),std:

c++ - 如何 "concatenate"boost::mpl::vectors

我有不同的载体mpl::vectormpl::vector我想“连接”它们以形成:mpl::vector这将允许我准备vector模板并在之后重复使用它们。我的问题有不同的解决方案,但这种方法似乎最适合我。谢谢... 最佳答案 libaray原生支持的函数boost::mpl::joint_view可能是更好的选择。它经过优化和惰性评估。http://www.boost.org/doc/libs/1_55_0/libs/mpl/doc/refmanual/joint-view.html

c++ - 如何用字符串文字优雅地初始化 vector<char *>?

问题来自C++Primer5thEdition上的一个练习:Writeaprogramtoassigntheelementsfromalistofchar*pointerstoC-stylecharacterstringstoavectorofstrings.----------------原始问题------------首先,我尝试了以下比较直接的方法:vectorvec={"Hello","World"};vec[0][0]='h';但是编译代码时我收到警告:temp.cpp:11:43:warning:deprecatedconversionfromstringconstantt

c++ - 删除动态分配的 vector 会清除它的内容吗

假设我有:vector*foo=newvector();我向其中添加了大量内容,使用它,然后我只需调用:deletefoo;我需要先调用foo.clear();吗?或者delete会调用析构函数。请不要评论这个愚蠢的行为,我知道至少应该在这里使用自动指针。此行为存在于我正在使用的代码库中,超出了我修复它的范围。 最佳答案 是的,vector的析构函数将被调用,这将清除其内容。delete在取消分配内存之前调用析构函数,vector的析构函数隐式调用.clear()(如您所知,让自动存储持续时间vector超出范围)。这很容易测试,使

c++ - c++ 中 std::vector 的 ArrayList 样式 indexOf?

我从Java进入C++,并且有一个常见的设计情况,在这种情况下我有一个元素(非基本元素)我想从std::vector中删除。在Java中,我会这样写:arrayList.remove(arrayList.indexOf(myClassInstance));在C++中,使用std::vector,最好/最高效/最干净的方法是什么?我能想到的最好的办法是创建一个对我正在搜索的实例的引用,然后遍历vector直到找到该引用。本质上,将vector中每个元素的内存地址与引用进行比较,直到找到匹配项。我在正确的轨道上吗?或者有更好的方法吗?(也许使用了不同的标准容器,到目前为止我只使用了std:

c++ - std::vector::push_back 不可复制对象给出编译器错误

我在g++(GCC)4.7.2上遇到编译错误但不在MSVC-2012当试图std::vector::push_back不可复制(私有(private)复制构造函数)但可移动的对象。对我来说,我的示例看起来与SO和其他地方的许多其他示例相同。错误消息使它看起来像是结构不是“可直接构造”的问题-我不知道这意味着什么,所以我加倍不确定为什么对象需要“可直接构造”才能被推回。#include#includestructMyStruct{MyStruct(std::unique_ptrp);MyStruct(MyStruct&&other);MyStruct&operator=(MyStruct

c++ - 使用指向 <Employee> vector 的唯一指针 vector

对于一项学校作业,我试图使用指向Employee对象的唯一指针vector来访问Employee数据,但无法找出语法/编译器错误。谁能告诉我我做错了什么?必须以这种方式使用智能指针vector。这里是适用的代码://CreateanEmployeeEmployeeEmpRec;//Assignvaluetoauniqueptrunique_ptrTempEmp;*TempEmp=EmpRec;//Createavectorofunique_ptrvector>EmpVect;//PushtheTempEmppointerontothevectorEmpVect.push_back(Te