C++ 标准似乎没有说明两者对容量的副作用
resize(n)
, 与 n < size()
, 或 clear()
.
它确实对 push_back
的摊余成本做出了声明和 pop_back
- O(1)
我可以设想一种实现通常的容量变化
ala CLRS 算法(例如,放大时加倍,减小时减半 size to < capacity()/4
)。
(Cormen Lieserson Rivest Stein)
谁有任何实现限制的引用?
最佳答案
调用resize()
较小的尺寸对 vector
的容量没有影响.它不会释放内存。
从 vector
中释放内存的标准习惯用法是swap()
它带有一个空的临时vector
: std::vector<T>().swap(vec);
.如果要向下调整大小,则需要从原始 vector 复制到新的本地临时 vector ,然后将生成的 vector 与原始 vector 交换。
更新: C++11 添加了成员函数 shrink_to_fit()
为此,减少 capacity()
的请求不具约束力。至size()
.
关于c++ - std::vector 向下调整大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1155693/