我知道,只要capacity()超过它们,矢量就会变大一倍.这个操作需要一些时间,这就是为什么向量应该具有用于添加元素的分摊的恒定时间的原因push_back().
我想知道的是......当矢量缩小以使其size()小于一半时会发生什么capacity().
载体是否放弃了它们使用的记忆,或者直到载体被破坏为止?
如果它们的尺寸不缩小,可能会浪费很多内存,但我从来没有听说过它们具有这种功能.
SSJ*_*_GZ 12
不,它永远不会被释放(即容量永远不会减少)直到毁灭.释放一些内存的常用习惯是创建一个正确大小的新向量,并使用它来代替:
std::vector<type>(originalVector).swap(originalVector);
Run Code Online (Sandbox Code Playgroud)
(受"更多例外C++"启发,第7项)