vector :: push_back何时增加容量?

时间:2013-02-15 17:30:20

标签: c++ stdvector

我通过在开头设置容量并使用std::vectors慢慢填充它们来使用一堆push_back。大多数这些矢量将具有相同的大小(16个元素),尽管有些可能会变大。如果我在最初为0且容量为16的向量上使用push_back 16次,我可以确定push_backs之后容量是否正好是16?

3 个答案:

答案 0 :(得分:7)

是 - 一旦您保留特定容量,在超过您设置 1 的容量之前,不会重新分配向量。确切地说,如果没有重新分配,你可以推送多少项目,但是至少可以保证这一项。


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

答案 1 :(得分:2)

23.3.6.5 [vector modifiers]

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

备注:如果新大小大于旧容量

,则会导致重新分配

几乎不言自明。

答案 2 :(得分:2)

烨。

23.3.6.3p6:

  

在调用reserve()之后发生的插入过程中,不会重新分配,直到插入使向量的大小大于capacity()的值为止。