134得票9回答
从同一向量中 push_back 一个元素是否安全?

vector<int> v; v.push_back(1); v.push_back(v[0]); 如果第二个 push_back 导致重新分配内存,那么对于向量中第一个整数的引用将不再有效。所以这不安全吗?vector<int> v; v.push_back(1); ...

110得票2回答
C++11中使用std::move的push_back()与emplace_back()对于已构造对象的效率比较。

在C++11中,emplace_back()通常比push_back()更受欢迎(就效率而言),因为它允许原地构造。但是,当使用已经构造的对象时,如果使用push_back(std::move()),是否仍然如此? 例如,在以下情况下,emplace_back()是否仍然优先考虑? std...

99得票8回答
如何一次将多个整数传递给向量?

目前,当我需要多次使用 vector.push_back() 时,我正在使用以下代码: std::vector<int> TestVector; TestVector.push_back(2); TestVector.push_back(5); TestVector....

97得票5回答
结构体向量的初始化

我想知道如何使用push_back方法将值添加到我的结构体向量中。struct subject { string name; int marks; int credits; }; vector<subject> sub; 那么现在我该如何向其中添加元素呢? 我有一...

48得票2回答
为什么emplace_back比push_back更快?

当我这样做时,我认为emplace_back应该是最佳选择:v.push_back(myClass(arg1, arg2)); 因为emplace_back会立即在向量中构造对象,而push_back会先构造一个匿名对象,然后将其复制到向量中。更多信息请参见此问题。 Google还提供了这个...

39得票4回答
C++ std::string append vs push_back()

这真的是我自己感兴趣的问题,我无法从文档中确定。我在http://www.cplusplus.com/reference/string/string/上看到append的复杂度为: "未指定,但通常是新字符串长度的线性级别。" 而push_back()的复杂度为: "未指定;通常是摊销常...

32得票2回答
向std::vector添加类字段时出现奇怪的行为

我发现在以下情况下有一些非常奇怪的行为(在clang和GCC上)。我有一个向量nodes,其中包含一个元素,即类Node 的一个实例。然后我调用 nodes[0] 上的函数来向向量添加一个新的Node。当添加新的 Node 时,调用对象的字段被重置了!但是,一旦函数完成,它们似乎又恢复了正常。...

25得票6回答
向量的向量push_back

我正在使用C++设计一个多级队列进程模拟器,但在尝试实现多个队列时遇到了问题(我的队列是向量)。"multilevel"是一个由4个元素组成的数组(而不是向量)。每个元素内都有一个向量(类型为t_PCB)。vector<vector<t_PCB>> multilevel...

16得票7回答
vector::push_back在内存方面的底层运作是什么?

我的问题与vector::push_back的影响有关,我知道它会在向量的末尾添加一个元素,但底层发生了什么? 如果我没记错的话,内存对象是按顺序分配的,那么我的问题是,vector::push_back是否只是在向量后立即分配更多的内存,如果没有足够的空闲内存该怎么办?或者说会在“末尾”添...

14得票2回答
在MSVC上,带有已删除移动构造函数的对象调用std::vector ::push_back()无法编译

我有一个类,其移动构造函数被删除,在尝试调用 std::vector::push_back() 时,MSVC(v.15.8.7 Visual C++ 2017)会出现错误,提示我正在尝试访问已删除的移动构造函数。如果我定义移动构造函数,代码会编译通过,但移动构造函数永远不会被调用。这两个版本在...