我知道,当超过 capacity()
时, vector 的大小会加倍。这个操作需要一些时间,这就是为什么 vector 应该有分摊常数时间来使用 push_back()
添加元素。
我想知道的是...当一个 vector 缩小到
size()
小于capacity()< 的一半时会发生什么
.vector 是否会放弃它们使用的内存,或者直到 vector 被销毁它才消失?
如果它们不缩小尺寸,可能会浪费大量内存,但我从未听说过它们具有该功能。
最佳答案
不,它在销毁之前永远不会被释放(即容量永远不会减少)。释放一些内存的常用习惯是创建一个正确大小的新 vector ,然后使用它:
std::vector<type>(originalVector).swap(originalVector);
(灵感来自“更出色的 C++”,第 7 项)
关于C++ vector 内存使用 - 它曾经被释放过吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7177864/