缩小以适应---这可能会导致重新分配,但不会影响矢量大小,也不会改变其元素。
在我看来,capacity()总是大于size(),我们可以使用
来完成deallocate(finish_, endOfStorage_ - finish_);
endOfStorage_ = finish_;
因此永远不需要重新分配。我的意见有什么不对吗?
答案 0 :(得分:4)
C ++标准库的分配器模型不允许部分释放内存。如果为10 T
分配足够的空间,那么您只需要分配那么多空间。你无法删除部分分配;你只能解除所有这些。
因此,如果shrink_to_fit
将改变容量,那么它只能通过执行重新分配来实现。
答案 1 :(得分:0)
简而言之...... 是的,shrink_to_fit导致重新分配
请求删除未使用的容量。 这是一个将capacity()减小到size()的非绑定请求。如果请求得到满足,则取决于实现。 如果发生重新分配,则所有迭代器(包括过去的迭代器)以及对元素的所有引用都将失效。如果不进行重新分配,则不会使迭代器或引用失效。