草庐IT

vector_X

全部标签

c++ - 为什么在命名空间前加上::,例如::std::vector

我看过生产代码如::std::vectormyvec;我不知道前面的::是什么意思-为什么要使用它?例子见:C++:ProperwaytoiterateoverSTLcontainers 最佳答案 这完全限定了名称,因此仅使用全局命名空间中std命名空间中的vector模板。它基本上意味着:{globalnamespace}::std::vectormyvec;当您在不同的命名空间中具有相同名称的实体时,可能会有所不同。有关何时这可能很重要的简单示例,请考虑:#includenamespacens{namespacestd{temp

c++ - 如何有效地将 vector 与 C++ 进行比较?

我需要在C++中为vector比较函数进行微优化的建议,它比较两个vector是否相等,元素的顺序无关紧要。templatestaticboolcompareVectors(constvector&a,constvector&b){intn=a.size();std::vectorfree(n,true);for(inti=0;i这个功能被大量使用,我正在考虑优化它的可能方法。你能给我一些建议吗?顺便说一句,我使用C++11。谢谢 最佳答案 它刚刚意识到这段代码只做了一种“集合等价”检查(现在我看到你确实这么说了,我是一个多么糟糕的

c++ - std::vector/编程书籍神话的默认大小?

在一本名为“C++fürC-Programmierer”(C++forCprogrammers,duh!)的德国编程书籍(可追溯到2012年)中,我作为引用购买了这本书,我在有关STL的章节中找到了以下部分(我'我马上为你们翻译):MostSTLimplementationsaregenerousintermsofmemorymanagement.Theallocationofvectorsismostlydonein1kbchunksforinstances.Theclipppingsdonotreallymatterifoneallocatesafewvectors,butitdo

C++ vector 与数组(时间)

我这里有两个程序,它们都在执行完全相同的任务。他们只是将bool数组/vector设置为真值。使用vector的程序运行需要27秒,而涉及大小为5倍的数组的程序需要不到1秒。我想知道为什么会有如此大的差异的确切原因?是载体真的那么低效吗?使用vector编程#include#include#includeusingnamespacestd;intmain(){constintsize=2000;time_tstart,end;time(&start);vectorv(size);for(inti=0;i运行时间-27秒使用数组编程#include#includeusingnamespa

c++ - 包含 "vector.h"或 "vector"会导致警告或错误

如果我输入#include在我的源文件中,我收到此警告:make-fMakefileCFG=Debugg++-c-g-o"Debug/mynn.o""mynn.cpp"InfileincludedfromC:/MinGW/bin/../lib/gcc/mingw32/3.4.5/../../../../include/c++/3.4.5/backward/vector.h:59,frommynn.h:7,frommynn.cpp:1:**C:/MinGW/bin/../lib/gcc/mingw32/3.4.5/../../../../include/c++/3.4.5/backwar

C++ deque 与 vector 和 C++ map 与 Set

谁能告诉我vector和deque之间有什么区别。我知道vector在C++中的实现,但不知道双端队列。map和set的接口(interface)也与我相似。两者之间有什么区别以及何时使用一个。 最佳答案 std::vector:一个动态数组类。内部内存分配确保它总是创建一个数组。当数据的大小已知并且已知不会经常更改时很有用。当您想随机访问元素时,它也很好。std::deque:双端队列,既可以充当栈也可以充当队列。当您不确定元素的数量以及访问数据元素总是以串行方式时非常有用。它们在前端和末端添加/删除元素时速度很快,但在中间添加/

c++ - 使用 for_each 计算 vector 中每个元素的平方和

作为for_each接受的功能只接受一个参数(vector的元素),我必须在某处定义一个staticintsum=0以便可以访问它在调用for_each之后。我觉得这很尴尬。有没有更好的方法(仍然使用for_each)?#include#include#includeusingnamespacestd;staticintsum=0;voidadd_f(inti){sum+=i*i;}voidtest_using_for_each(){intarr[]={1,2,3,4};vectora(arr,arr+sizeof(arr)/sizeof(arr[0]));for_each(a.beg

c++ - 是否有无锁 vector 实现?

Google中关于“无锁vector”的第一个结果是由DamianDechev、PeterPirkelbauer和BjarneStroustrup共同撰写的一篇研究论文,描述了一个理论上的无锁vector。这个或任何其他无锁vector是否已实现? 最佳答案 MS提供了ppl::concurrent_vector,Intel提供了tbb::concurrent_vector。在Windows上,至少ppl和tbb是C-Runtime的一部分。 关于c++-是否有无锁vector实现?,我

c++ - 如何快速从已排序的 vector 中获取已排序的子 vector

我有这样的数据结构:structX{floatvalue;intid;};一个vector(大小N(认为100000),按值排序(在程序执行期间保持不变):std::vectorvalues;现在,我想写一个函数voidsubvector(std::vectorconst&values,std::vectorconst&ids,std::vector&out/*,helperdatahere*/);用值的排序子集填充out参数,由传递的ids给出(大小MN(大约是N的0.8倍),快速(内存不是问题,这个会反复做,所以构建lookuptables(来自函数参数的辅助数据)或其他只做一次的

c++ - clang c++17 std::vector 在使用 -mavx 编译时元素 SIGSEGV 的对齐类型拷贝

根据这个question我认为在C++17中,带有默认分配器的std::vector应该处理对齐类型。但是,下面的代码#include#include#include#includetemplatestructalignas(Alignment)AlignedArray:publicstd::array{friendstd::ostream&operator(o,""));returno;}};intmain(){usingArray=AlignedArray;std::vectorv(10);for(constauto&e:v){autoarr(e);std::cout创建arr时出