将 size() 调整为较小的大小是否会丢弃早期 reserve() 所做的保留

Does resize() to a smaller size discard the reservation made by earlier reserve()?

本文关键字:保留 reserve 调整 size 是否      更新时间:2023-10-16

那么如果我先保留(100),添加一些元素,然后resize(0)(或任何其他小于当前大小的数字),矢量会重新分配内存以占用的空间少于100个元素吗?

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

有关更多详细信息,请参阅此问题的答案:std::向量向下调整大小

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

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