C++ 标准似乎没有声明任何有关容量的副作用resize(n)
, with n < size()
, or clear()
.
它确实对摊余成本做出了声明push_back
and pop_back
- O(1)
我可以设想一种执行通常类型的容量更改的实现
ala CLRS 算法(例如,放大时加倍,减小时减半size to < capacity()/4
)。
(科门·莱瑟森·里维斯特·斯坦因)
有人可以参考任何实施限制吗?
Calling resize()
较小的尺寸对容量没有影响vector
。它不会释放内存。
从 a 中释放内存的标准习惯用法vector
is to swap()
它与一个空的临时vector
: std::vector<T>().swap(vec);
。如果您想向下调整大小,则需要从原始向量复制到新的本地临时向量,然后将结果向量与原始向量交换。
Updated:C++11添加了成员函数shrink_to_fit() http://en.cppreference.com/w/cpp/container/vector/shrink_to_fit为此目的,这是一个不具约束力的减少请求capacity()
to size()
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)