快问。假设我声明了一个大小为 20 的向量。然后我想使用 push_back 添加一些整数。
vector<int> myVector(20);
myVector.push_back(5);
myVector.push_back(14);
我的向量的容量现在是 22,还是仍然是 20? 5 和 14 是否分别添加到索引 [19] 和 [20] 中?或者它们在 [0] 和 [1] 处?
在这些语句之后,其容量是由实现定义的。 (请注意,这与其尺寸不同。)
vector<int> myVector(20);
这将创建一个充满二十个 0 的向量。准确地说,它的大小是二十,容量至少是二十。是否正好是二十是由实现定义的;它可能有更多(实际上可能没有)。
myVector.push_back(5);
此后,数组的第二十一个元素是 5,并且容量再次由实现定义。 (如果容量之前正好是二十,那么现在会以未指定的方式增加。)
myVector.push_back(14);
同样,现在数组的第 22 个元素是 14,容量是由实现定义的。
如果你想保留空间,但不想插入元素,你可以这样做:
vector<int> myVector;
myVector.reserve(20); // capacity is at least twenty, guaranteed not
// to reallocate until after twenty elements are pushed
myVector.push_back(5); // at index zero, capacity at least twenty.
myVector.push_back(14); // at index one, capacity at least twenty.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)