草庐IT

vector_tostr

全部标签

c++ - vector<bool>::operator[] 行为不当?

这个问题在这里已经有了答案:关闭9年前。PossibleDuplicate:Whyvector::referencedoesn’treturnreferencetobool?我曾经认为std::vector::operator[]我们得到了被访问项目的深度拷贝,但似乎并不总是如此。至少,用vector下面的测试代码给出了不同的结果:#include#includeusingnamespacestd;templatevoidTest(constT&oldValue,constT&newValue,constchar*message){coutv;v.push_back(oldValue)

c++ - remove_if and then erase 在 vector 上是否有效?

虽然关于vector的remove_if+erase有几十个问题。我找不到这种Action的表现。当我写:myVector.erase(remove_if(myVector.begin(),myVector.end(),some_predicate),myVector.end());removeif将返回指向最后一个相关项+1(我们称它为X)的迭代器。我相信这会在O(n)内发生。但是删除将如何工作?如果删除将尝试从X删除到myVector.end()它将是O(n^2)因为它会导致将vector复制到新位置,并且将有O(n)次新分配从堆。但是如果它将从myVector.end()删除到X

c++ - C/C++ 位数组或位 vector

我正在学习C/C++编程并且遇到过“位数组”或“位vector”的用法。无法理解他们的目的?这是我的疑问-它们是否用作bool标志?能否改用int数组?(当然有更多的内存,但是..)Bit-Masking的概念是什么?如果位掩码是简单的位操作以获得适当的标志,如何为它们编写一个程序?是否不难在头脑中执行此操作以查看与十进制数相对应的标志是什么?我正在寻找应用程序,以便我更好地理解。对于例如-Q.给定一个文件,其中包含范围(1到1百万)内的整数。有一些重复项,因此缺少一些数字。找到寻找失踪的最快方法数字?对于上述问题,我已经阅读了告诉我使用位数组的解决方案。如何在位中存储每个整数?

c++ - 如何检查一个值是否包含在 vector 中? C++

这个问题在这里已经有了答案:Howtofindoutifanitemispresentinastd::vector?(18个答案)关闭9个月前。我有一个vector,我正在尝试对其执行包含函数。我收到某种转换错误,无法拼凑出解决方案。我还想知道我正在做的事情是否是检查vector是否包含值的适当方法。代码如下:#include"stdafx.h"#includestaticvoidsomeFunc(double**Y,intlength);staticboolcontains(doublevalue,std::vectorvec);intmain(){doubledoubleArray

c++ - STL vector 是 realloc 的更好版本吗?

我认为,在C++中,处理重新分配的更好方法是使用STLvector,因为它保证了连续的存储位置。我有几个问题想了解其中的区别:有没有我需要更喜欢的场景realloc在vector上?还有什么(除了vector)等同于realloc吗?在C++中?谢谢, 最佳答案 只是vector,保证有连续的内存。不是其他人。realloc是一个C内存管理函数。在C++代码中不鼓励使用它。Stroustrup告诉您原因:Whydoesn'tC++haveanequivalenttorealloc()?However,realloc()isonlyg

c++ - 缩小 vector

我的地形引擎(使用DirectX)有问题。我正在使用vector来保存细节block的顶点。当block详细增加时,vector也会增加。但是,当block减少其细节时,vector的大小不会缩小。那么,我的问题是:有没有办法缩小vector的大小?我试过这个:vertexvector.reserve(16); 最佳答案 如果从vector中弹出元素,它不会释放内存(因为这会使容器元素中的迭代器失效)。您可以将vector复制到新vector,然后将其与原始vector交换。这样就不会浪费空间。Swap具有恒定的时间复杂度,因为交换

c++ - 我如何在 C++ 中使用 'ToString()' 枚举?

这个问题在这里已经有了答案:Howtoeasilymapc++enumstostrings(23个回答)关闭7年前。如何在C++中“ToString()”一个枚举?在Java和C#中,我只调用ToString。enumColours{Red=0,Green=1,Blue=2};我需要创建一个字符串,例如:“Invalidcolor'”+color+“'selected。”

c++ - 在 C++ 中的 main() 之前初始化 vector

我希望能够在main之前初始化大小为“SIZE”的vector。通常我会做staticvectormyVector(4,100);intmain(){//HereIhaveavectorofsize4withalltheentriesequalto100}但问题是我想将vector的第一项初始化为某个值,将另一个初始化为另一个值。有没有简单的方法来做到这一点? 最佳答案 试试这个:staticintinit[]={1,2,3};staticvectorvi(init,init+sizeofinit/sizeofinit[0]);另请

c++ - 为什么在 C++ 中找不到 vector

还有什么选择?我应该自己写吗? 最佳答案 有std::find()算法,它在迭代器范围内执行线性搜索,例如,std::vectorv;//Findsthefirstelementinthevectorthathasthevalue42://Ifthereisnosuchvalue,it==v.end()std::vector::const_iteratorit=std::find(v.begin(),v.end(),42);如果您的vector已排序,您可以使用std::binary_search()来测试vector中是否存在值,

c++ - GCC 和 VC++ 之间 std::vector::emplace_back 的区别

这个问题在这里已经有了答案:Canstd::vectoremplace_backcopyconstructfromanelementofthevectoritself?(3个答案)关闭7年前。我听说ModernC++的建议之一是使用emplace_back而不是push_back来追加到容器中(emplace_back接受容器中存储类型的任何构造函数的任何版本参数。根据标准草案N379723.3.6.5(1),说:Remarks:Causesreallocationifthenewsizeisgreaterthantheoldcapacity.Ifnoreallocationhappe