调整大小()到较小的大小会丢弃先前的reserve()所做的预留吗?

时间:2012-04-13 00:21:13

标签: c++ vector containers std

因此,如果我首先保留(100),添加一些元素,然后调整大小(0)(或小于当前大小的任何其他数字),向量是否会将内存重新分配给占用的空间少于100个元素?

2 个答案:

答案 0 :(得分:6)

vector<T>::resize(0)不应导致重新分配或删除已分配的内存,因此在大多数情况下优于vector<T>::clear()

有关详细信息,请参阅此问题的答案:std::vector resize downward

答案 1 :(得分:2)

执行vector::resize(0)或更小的计数而不是当前计数不应取消分配任何内存。但是,它可能会破坏这些元素。

有关std::vector::resize的参考,请查看std::vector::resize