shink_to_fit是否会导致重新分配

Does shink_to_fit cause a rellocation?

本文关键字:新分配 分配 fit to 是否 shink      更新时间:2023-10-16

收缩以拟合---这可能会导致重分配,但对矢量大小没有影响,并且不能更改其元素。

在我看来,capacity(( 总是大于 size((,我们可以使用

deallocate(finish_, endOfStorage_ - finish_);
endOfStorage_ = finish_;

因此,永远不需要重新分配。我的意见有错吗?

C++标准库的分配器模型不允许部分释放内存。如果您为 10 T 秒分配了足够的空间,那么您就有了这么多空间的单一分配。您无法删除部分分配;您只能全部解除分配。

因此,如果shrink_to_fit要更改容量,则只能通过执行重新分配来执行此操作。

简而言之.

.是shrink_to_fit导致重新分配

请求删除未使用的容量。将容量((减少到大小((是一个不具约束力的请求。如果满足请求,这取决于实现。如果发生重新分配,则所有迭代器(包括过去的结束迭代器(和对元素的所有引用都将失效。如果未发生重新分配,则不会使迭代器或引用失效。