我std::vectors
通过在开始时设置它们的容量并使用push_back
来慢慢填充它们来使用一堆。这些向量中的大多数将具有相同的大小(16 个元素),尽管有些可能会变得更大。如果我push_back
最初在大小为 0 且容量为 16 的向量上使用 16 次,我可以确定容量在 16 之后正好是 16push_backs
吗?
问问题
718 次
3 回答
7
是的——一旦你保留了一个特定的容量,向量将不会被重新分配,直到你超过你设置的容量1。没有指定在不重新分配的情况下可以推送多少项目,但可以保证至少有多少项目。
- 特别是,指向向量的指针和迭代器保证在超过指定容量之前保持有效。
于 2013-02-15T17:32:18.597 回答
2
23.3.6.5 [vector modifiers]
void push_back(const T& x);
void push_back(T&& x);
备注:如果新大小大于旧容量,则导致重新分配
几乎不言自明。
于 2013-02-15T17:34:04.670 回答
2
是的。
23.3.6.3p6:
在调用之后发生的插入期间不会发生重新分配,
reserve()
直到插入会使向量的大小大于 的值capacity()
。
于 2013-02-15T17:36:49.867 回答