vector::push_back何时增加容量

When does vector::push_back increase capacity?

本文关键字:增加 容量 何时 push vector back      更新时间:2023-10-16

我正在使用一堆std::vectors,方法是在开始时设置它们的容量,然后使用push_back慢慢填充它们。这些向量中的大多数将具有相同的大小(16个元素),尽管有些可能会变得更大。如果我在一个大小为0、容量为16的向量上使用push_back 16次,我能确定容量在push_backs之后正好是16吗?

是--一旦您保留了特定的容量,矢量将不会被重新分配,直到您超过设置的容量1。没有具体说明你可以在不重新分配的情况下推送多少物品,但你可以保证至少推送那么多。


  1. 特别是,向量中的指针和迭代器保证在超过指定容量之前保持有效

23.3.6.5 [vector modifiers]

void push_back(const T& x);
void push_back(T&& x);

备注:如果新大小大于旧容量,则导致重新分配

几乎不言自明。

是的。

23.3.6.3p6:

在调用reserve()之后发生的插入期间,不应进行重新分配,直到插入将使向量的大小大于capacity()的值为止。