首頁  >  文章  >  後端開發  >  如何縮小 `std::vector` 的容量:「交換技巧」解釋

如何縮小 `std::vector` 的容量:「交換技巧」解釋

Barbara Streisand
Barbara Streisand原創
2024-10-26 15:58:30158瀏覽

How to Shrink a `std::vector`'s Capacity: The

如何減少std::Vector 的容量

這個問題之前已被問過,解決了許多程式設計師在使用std 時面臨的特定問題::向量。它尋求一種縮小向量容量的方法,在其內容減少後減少其多餘的記憶體分配。

答案:

建議的解決方案,如建議的Scott Meyers 在《Effective STL》(第17 項)中提出的方法是採用“交換技巧”來削減過剩容量。此方法涉及建立一個具有所需減少容量的新向量,並將其內容與原始向量交換。

<code class="cpp">vector<Person>(persons).swap(persons);</code>

執行此交換後,現在為空的原始向量將被釋放,並且新的副本將以其減少的容量取代它,非常適合其當前內容。

基本原理:

此技術利用了向量複製建構函數的一個關鍵面向行為。從向量複製元素時,新向量僅分配足夠的記憶體來容納複製的元素,而不管原始向量的容量如何。透過將新的、縮小尺寸的向量與原始向量交換,多餘的容量被有效地修剪。

以上是如何縮小 `std::vector` 的容量:「交換技巧」解釋的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn