草庐IT

vector_tostr

全部标签

c++ - 在声明 "std::vector<X> f();"中, "std::vector<X>"是实例化吗?

C++语言标准规定了标准库中有关模板组件的以下内容:Theeffectsareundefined...ifanincompletetypeisusedasatemplateargumentwheninstantiatingatemplatecomponent,unlessspecificallyallowedforthatcomponent(C++11§17.6.4.8/2).以下是否会导致std::vector的实例化?类模板?classX;std::vectorf();//Declarationonly;wewilldefineitwhenXiscomplete换个说法,在函数声明

c++ - 具有成员 std::vector 的移动语义

抱歉,如果之前有人问过这个问题,但据我了解,在C++11中,std::vector有一个移动构造函数,因此在某些情况下,复制几乎不会花费任何成本,比如返回一按值(value)。但是,如果我有一个像这样的类,以vector作为成员变量:classMyClass{public:MyClass(){}MyClass(constMyClass&rhs){}//otherinterfacesprivate:std::vectormyvec;//implementation};并且有一个按值返回其中之一的函数,例如MyClasssomefunc(){MyClassmc;//fillmc.myvec

c++ - 在 vector 中移动项目的最有效方法是什么?

我见过一些特殊情况,可以使用std::rotate或与其中一种搜索算法结合使用,但通常是:当一个人有一个包含N个项目的vector并且想要编写函数时喜欢:voidmove(intfrom,intcount,intto,std::vector&numbers);我一直在考虑创建一个新的vector+std::copy或插入/删除的组合,但我不能说我最终得到了一些漂亮而优雅的解决方案。 最佳答案 在得出任何结论之前,先进行分析总是很重要的。vector的数据内存的连续性可能会提供基于节点的容器所没有的显着缓存优势。所以,也许你可以试试直

c++ - std::vector-like 类优化以容纳少量项目

这个问题在这里已经有了答案:smallstringoptimizationforvector?(4个回答)关闭7年前。在程序的一个时间关键部分中,有一个类成员如下所示:std::vectorm_vLinks;在分析过程中,我注意到大约99.98%的执行该vector仅包含0或1个项目。然而,在极少数情况下,它可能会持有更多。根据分析器,这个vector绝对是一个瓶颈,所以我正在考虑以下优化:使用类vector界面制作手工类此类将保存真实大小、一项和指向vector的可选指针在这种情况下,当vector包含1个项目时,不会有任何动态内存分配,并且由于删除了一个间接,访问该项目也会(有点)

c++ - 转换标准 :vector to NSArray

有没有什么好的方法可以转换vector到NSArray的NSNumber或正在循环并添加到NSMutableArray几乎是唯一的方法? 最佳答案 如果您有一个对象vector,您可以执行以下操作:NSArray*myArray=[NSArrayarrayWithObjects:&vector[0]count:vector.size()];但是,如果您的vector包含原始类型,例如NSInteger、int、float等,则必须手动循环vector中的值并首先将它们转换为NSNumber。

c++ - std::vector::emplace_back 和 std::move

std::vector::emplace_back和std::move一起使用有什么好处吗?或者它只是多余的,因为std::vector::emplace_back将进行就地构造?澄清案例:std::vectorbar;第一:bar.emplace_back(std::move(std::string("some_string")));第二:std::stringstr("some_string");bar.emplace_back(std::move(str));第三:bar.emplace_back(std::move("some_string"));

C++ unordered_set vector

我可以在C++中创建一个unordered_setvector吗?像这样的std::unordered_set>s1;因为我知道标准库的“set”类可以做到这一点,但它似乎不适用于无序版本谢谢更新:这正是我正在尝试使用的代码typedefintCustomerId;typedefstd::vectorRoute;typedefstd::unordered_setPlan;//...inthemainRouter1={4,5,2,10};Router2={1,3,8,6};Router3={9,7};Planp={r1,r2};如果我使用set也没关系,但是尝试使用无序版本时收到编译错误

c++ - 容器中的智能指针,如 std::vector?

我正在学习智能指针(std::auto_ptr)并刚刚阅读here和here不应将智能指针(std::auto_ptr)放入容器中(即std::vector),因为即使大多数编译器也不会提示,而且它可能看起来是正确的。没有规则说智能指针不会在内部复制(例如通过vector类)并转移其所有权,然后指针将变为NULL。到头来,一切都会搞砸。实际上,这种情况多久发生一次?有时我有指针vector,如果将来我决定想要一个智能指针vector,我的选择是什么?我知道C++0x和Boost库,但目前我更愿意坚持使用STL方法。 最佳答案 是的,

c++ - 在删除指向动态分配对象的指针 vector 中的元素之前,我需要做什么?

我有一个vector,我用指向对象的指针填充。我正在努力学习良好的内存管理,并且有几个一般性问题:当我完成vector后,是否必须循环遍历它并在每个指针上调用delete?为什么我不必在没有new语句的情况下对vector或我声明的任何其他变量调用delete,但必须对指针调用delete?如果vector在返回的函数中声明(导致vector超出范围),C++是否会为我释放指针的内存? 最佳答案 是的vector是使用模板内存分配器实现的,该分配器会为您处理内存管理,因此它们有些特殊。但作为一般经验法则,由于堆栈和堆分配之间的差异,

C++/二维 vector 的大小

如何找到二维vector的大小?到目前为止,我有以下无法编译的代码。#include#includeusingnamespacestd;intmain(){vector>v2d;for(intx=0;x());v2d[x].push_back(y);}}cout 最佳答案 要获得v2d的大小,只需使用v2d.size()。对于v2d中每个vector的大小,请使用v2d[k].size()。注意:为了得到v2d的整体大小,将每个vector的大小相加,因为每个vector都有自己的大小。