vector::push_back何时增加容量
When does vector::push_back increase capacity?
我正在使用一堆std::vectors
,方法是在开始时设置它们的容量,然后使用push_back
慢慢填充它们。这些向量中的大多数将具有相同的大小(16个元素),尽管有些可能会变得更大。如果我在一个大小为0、容量为16的向量上使用push_back
16次,我能确定容量在push_backs
之后正好是16吗?
是--一旦您保留了特定的容量,矢量将不会被重新分配,直到您超过设置的容量1。没有具体说明你可以在不重新分配的情况下推送多少物品,但你可以保证至少推送那么多。
- 特别是,向量中的指针和迭代器保证在超过指定容量之前保持有效
23.3.6.5 [vector modifiers]
void push_back(const T& x);
void push_back(T&& x);
备注:如果新大小大于旧容量,则导致重新分配
几乎不言自明。
23.3.6.3p6:
在调用
reserve()
之后发生的插入期间,不应进行重新分配,直到插入将使向量的大小大于capacity()
的值为止。
相关文章:
- 数组索引的值没有增加
- 为什么我的代码在输出中增加了93天
- 有效地使用std::unordered_map来插入或增加键的值
- 具有非整数边容量的最大流量的Dinic算法
- C++ 动态数组每次添加时将大小增加 1 - 错误
- 将stl字符串缩小到小于15个字符的容量
- 为什么要增加导致崩溃的指针
- 在容量内调整矢量大小时的性能影响
- std::vector的容量会降低吗?
- 增加传递地址的值
- 插入元素后矢量容量增加
- push_back在增加容量之前推动元件
- 增加字符串的容量
- 矢量容量的增加
- 增加C++循环队列的容量
- STL矢量:当矢量容量因插入而增加时,在分配新的连续内存后,是否删除或保留旧的连续内存
- vector::resize增加了多少容量?
- std::vector *必须*在增加容量时移动对象吗?或者,分配器可以"reallocate"吗?
- c++动态数组,增加容量
- vector::push_back何时增加容量