草庐IT

vector_c

全部标签

C++:使用 vector/数组优化速度?

我有一个嵌套的for循环结构,现在我在每次迭代开始时重新声明vector:voidfunction(n1,n2,bound,etc){for(inti=0;i>vec(n1,vector(n2));//aboutthreemorefor-loopshere}}这使我可以在每次迭代中“重新开始”,这非常有效,因为我的内部操作主要采用vec[a][b]+=somevalue的形式。但我担心大n1或大n2会很慢。我不知道vector/数组/等的底层架构,所以我不确定处理这种情况的最快方法是什么。我应该改用数组吗?我应该以不同的方式清除它吗?我应该完全以不同的方式处理逻辑吗?编辑:vector

c++ - 类中类似于 std::map 或 std::vector 的构造函数

我正在创建一个类,我想知道如何创建类似于std::map或std::vector样式的构造函数。std::mapmap={{"foo","bar"},{"biz","buz"},{"bez","boz"}};不同之处在于我不希望我的类(class)要求想要接受的类型,就像std::map一样。std::map我希望我的类(class)接受这种风格的论点:{{"foo","bar"},{"biz","buz"},{"bez","boz"}};但具有定义的类型。(std::string,Typer)“Typer”是我将作为值插入到std::map上的一个类。 最

c++ - 类 : handling copy constructor and destructor (C++) 内的 vector

以“big3”(构造函数、复制构造函数、析构函数)的简单类:#includeusingnamespacestd;//actuallygoesintheCfilethatlinkstothisheaderfile...classplanets(){//storesmassandradiidataforplanetsinasolarsystem.public:vectormass;vectorradius;//constructorplanets(intnumObj){for(inti=0;imass(p.mass);//copyvectorsintonewclass.vectorradi

c++ - 什么时候应该使用对象 vector 而不是指针 vector ?

我有一组多态对象,它们都派生self的Animal类:Cat、Dog和MonkeyFish。我通常的操作方式是将这些对象存储在一个由Animal指针组成的vector中,如下所示:std::vectormy_vector;my_vector.push_back(newAnimal_Cat());my_vector.push_back(newAnimal_Dog());my_vector.push_back(newAnimal_MonkeyFish());生活很美好……是吗?最近有人告诉我,我真的应该尽量避免以这种方式分配内存,因为它使内存管理成为一件苦差事。当我需要销毁my_vecto

C++使用算法过滤类 vector

如何使用算法按国家/地区过滤类vectorstudentList?这意味着我只显示来自“美国”国家的学生的详细信息。boolcheckCountry(stringx,stringy){return(x==y);}vectorstudentList;studentList.push_back(Student("Tom",'M',"91213242","America"));studentList.push_back(Student("Jessilyn",'F',"98422333","Europe")); 最佳答案 usingstd:

c++ - 我可以使用复制算法复制 'vector' 中的 'set' 元素吗?

我在以下代码中遇到运行时错误。请让我知道我可以在集合中复制vector元素吗?#include#include#includeusingnamespacestd;intmain(){vectorv;setkk;set::iteratoritr;for(inti=0;i 最佳答案 你没有初始化itr:set::iteratoritr=kk.begin();或完全删除itr:copy(v.begin(),v.end(),inserter(kk,kk.begin()));在这种情况下,你可以简单地初始化kk(但如果你想添加到kk遵循上面的

c++ - vector 是链表的特例吗?

说起STL,有几个同学跟我说“vector就是链表”。我还有一个人争辩说,如果你用迭代器调用erase()方法,它会破坏vector,因为它是一个链表。他们也往往不明白为什么我总是认为vector是连续的,就像任何其他数组一样,并且似乎不明白随机访问的含义。vector是否像常规数组一样严格连续,或者最多是连续的?(例如,如果整个数组不适合,它将分配几个连续的段)。 最佳答案 很抱歉,你的同学完全错了。如果你的同学可以诚实地说“vector是链表”,那么你需要恭敬地告诉他们,他们需要拿起agoodC++book(或任何体面的计算机科

c++ - std::vector 何时重新分配其内存数组?

我找不到任何能给出明确答案的东西。我只是好奇std::vector是否仅在绝对必须或将在预期中提前重新分配时才重新分配其内部数组(可以这么说)。例如:std::vectormyVector;for(inti=0;i如果我继续添加元素,我添加的接下来的24项中的一项是否会改变容量,或者只有在我放入第25项后才会重新分配?注意:我确实在Linux下使用gcc4.4.3进行了测试,但似乎重新分配是“按需”完成的,但我很好奇我是否只是幸运,或者是否有什么地方表明这是预期的行为。 最佳答案 来自C++标准23.2.4.2:size_typec

c++ - 在 for-each 循环中删除 vector 的一些元素而不迭代整个 vector

我有一个vector,我正在搜索其中的一个元素,同时使用for-each循环遍历该vector。如果我在搜索过程中发现任何无效元素,我想将它们从vector中删除。基本上,我想做这样的事情:for(autoel:vec){if(el==whatImLookingFor){returnel;}elseif(isInvalid(el)){vec.erase(el);}}我查看了一些其他问题,例如this和this,但两者都推荐使用std::remove_if。这将遍历整个vector并删除所有无效元素,而不是仅在找到我要查找的元素之前进行迭代,然后忽略之后的任何元素。什么是这样做的好方法?

c++ - 如何在 C++ 中动态扩展数组? {就像 vector 中的}

可以说,我有int*p;p=newint[5];for(inti=0;i现在我想向数组中添加第6个元素。我该怎么做? 最佳答案 你必须重新分配数组并复制数据:int*p;p=newint[5];for(inti=0;i 关于c++-如何在C++中动态扩展数组?{就像vector中的},我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/1350630/