插入元素后向量容量增加?

New*_*sis 1 c++ vector

我是c +的新手,我刚刚开始尝试它.这是我刚刚经历的一些代码:

#include <iostream>
#include <vector>

int main() {

   std::vector<int> v;
   std::cout << "Capacity of v is " << v.capacity() << '\n';

   v.resize (100);
   std::cout << "Capacity of v after resize is " << v.capacity() << '\n';

   v.insert (v.begin(), 2);
   std::cout << "Capacity of v after insert is " << v.capacity() << '\n';
}
Run Code Online (Sandbox Code Playgroud)

我得到以下输出:

Capacity of v is 0  
Capacity of v after resize is 100
Capacity of v after insert is 200

现在,我已经读过,当容量变得太小时,例如由于插入,矢量会重新分配.但我以为我的容量为100?现在我只想插入2.为什么2不适合100的容量?我似乎不明白.

R S*_*ahu 5

也许你对这是什么感到困惑std::vector::resize.

它缩小或增大对象,使其具有给定函数的大小.通过使用

v.resize (100);
Run Code Online (Sandbox Code Playgroud)

你问过v要调整大小为100个元素.在那之后,电话

v.insert (v.begin(), 2);
Run Code Online (Sandbox Code Playgroud)

对象的大小为101.如果当前容量小于101,则需要增加容量.

也许你打算用std::vector::reserve.如有必要,它会增加对象的容量,而不会增加其大小.