我真的是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';
}

我得到以下输出:

v的容量为0
调整大小后v的容量为100
插入后v的容量为200

现在,我读到当容量变得太小时,例如, vector 会重新分配自身。由于插入。但是我以为我可以容纳100人?现在我只想插入2。为什么2不能容纳100个容量?我似乎不明白。

最佳答案

也许您对std::vector::resize的功能感到困惑。

它缩小或增大对象,使其具有指定功能的大小。通过使用

v.resize (100);

您要求将v调整为100个元素。之后,通话
v.insert (v.begin(), 2);

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

也许您打算使用 std::vector::reserve 。如有必要,它可以增加对象的容量,而不增加其大小。

10-07 16:43
查看更多