我是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';
}
我得到以下输出:
Capacity of v is 0 Capacity of v after resize is 100 Capacity of v after insert is 200
现在,我已经读过,当容量变得太小时,矢量会自动重新分配,例如由于插入。但我以为我的容量为100?现在我只想插入2.为什么2不适合100的容量?我似乎不明白。
答案 0 :(得分:5)
也许你对std::vector::resize
的作用感到困惑。
缩小或增大对象,使其具有赋予函数的大小。使用
v.resize (100);
您要求将v
调整为100个元素。之后,通话
v.insert (v.begin(), 2);
对象的大小为101.如果当前容量小于101,则需要增加容量。
也许您打算使用std::vector::reserve
。如有必要,它会增加对象的容量,而不会增加其大小。