iaa*_*acp 5 c++ vector push-back
快问.假设我声明了一个大小为20的向量.然后我想使用push_back为它添加一些整数.
vector<int> myVector(20);
myVector.push_back(5);
myVector.push_back(14);
Run Code Online (Sandbox Code Playgroud)
我的载体的容量现在是22,还是20?5和14分别加入指数[19]和[20]?或者他们是[0]和[1]?
GMa*_*ckG 12
在这些陈述之后,其能力是实施定义的.(请注意,它的大小不同.)
vector<int> myVector(20);
Run Code Online (Sandbox Code Playgroud)
这会创建一个充满20个0的向量.它的大小正好是二十,其容量至少为二十.它是否完全是二十是实现定义的; 它可能有更多(实际上可能没有).
myVector.push_back(5);
Run Code Online (Sandbox Code Playgroud)
在此之后,数组的第21个元素是5,并且容量再次被实现定义.(如果之前的容量正好是二十,那么它现在以未指定的方式增加.)
myVector.push_back(14);
Run Code Online (Sandbox Code Playgroud)
同样,现在数组的第二十二个元素是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.
Run Code Online (Sandbox Code Playgroud)