2017-05-09 77 views
0

縮小以適合---這可能會導致重新分配,但對矢量大小沒有影響,並且不能更改其元素。shink_to_fit是否會導致重新分配?

在我看來,容量()總是比尺寸更大的(),我們可以使用所以從來不需要

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

再分配做到這一點。我的意見有錯嗎?

+3

分配了一塊內存;你怎麼能釋放它的一部分? – songyuanyao

+0

謝謝。在你回答之前,它使我感到困惑。 – zwfars

回答

4

C++標準庫的分配器模型不允許部分釋放內存。如果您爲10 T分配了足夠的空間,那麼您只有一個空間的單個分配。你不能刪除部分分配;你只能釋放所有它。

因此,如果shrink_to_fit要改變容量,那麼它只能通過執行重新分配來實現。

+0

感謝您的幫助。 :) – zwfars

0

要在簡短的回答.. 是shrink_to_fit引起再分配

請去除未使用的容量。 這是一個不具約束力的將容量()減小到size()的請求。如果請求得到滿足,則取決於實現。 如果發生重新分配,則所有迭代器(包括過去的末端迭代器)以及對元素的所有引用都將失效。如果不進行重新分配,則不會使迭代器或引用無效。

相關問題