插入元素后矢量容量增加

Capacity of vector increases after inserting an element?

本文关键字:容量 增加 元素 插入      更新时间:2023-10-16

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

现在,我已经读到当容量变得太小时,例如由于插入,向量会重新分配自己。但我认为我有100个容量?现在我只想插入 2。为什么 2 个不适合 100 个容量?我似乎不明白这一点。

也许你对std::vector::resize做什么感到困惑。

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

v.resize (100);

您要求将v大小调整为 100 个元素。之后,电话

v.insert (v.begin(), 2);

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

也许你的意思是使用std::vector::reserve.如有必要,它可以在不增加其大小的情况下增加对象的容量。