当您想减小向量的大小时,为什么 std::vector::resize() 不释放内存?

jsg*_*guy 1 c++ resize vector

我不明白为什么我必须使用std::vector::swap()来释放内存vector当我想减小 a 的大小时。

为什么有人想要减小 a 的大小,vector同时保留分配的其余未使用内存?

jua*_*nza 6

减少向量的容量包括

  • 分配新的存储
  • 复制现有元素
  • 释放旧存储

这一切都不是免费的。真正缩小矢量会产生与之相关的成本,并且不清楚用户是否应该默认支付。