我通过在开头设置容量并使用std::vectors
慢慢填充它们来使用一堆push_back
。大多数这些矢量将具有相同的大小(16个元素),尽管有些可能会变大。如果我在最初为0且容量为16的向量上使用push_back
16次,我可以确定push_backs
之后容量是否正好是16?
答案 0 :(得分:7)
是 - 一旦您保留特定容量,在超过您设置 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()
的值为止。