這個問題之前已被問過,解決了許多程式設計師在使用std 時面臨的特定問題::向量。它尋求一種縮小向量容量的方法,在其內容減少後減少其多餘的記憶體分配。
答案:
建議的解決方案,如建議的Scott Meyers 在《Effective STL》(第17 項)中提出的方法是採用“交換技巧”來削減過剩容量。此方法涉及建立一個具有所需減少容量的新向量,並將其內容與原始向量交換。
<code class="cpp">vector<Person>(persons).swap(persons);</code>
執行此交換後,現在為空的原始向量將被釋放,並且新的副本將以其減少的容量取代它,非常適合其當前內容。
基本原理:
此技術利用了向量複製建構函數的一個關鍵面向行為。從向量複製元素時,新向量僅分配足夠的記憶體來容納複製的元素,而不管原始向量的容量如何。透過將新的、縮小尺寸的向量與原始向量交換,多餘的容量被有效地修剪。
以上是如何縮小 `std::vector` 的容量:「交換技巧」解釋的詳細內容。更多資訊請關注PHP中文網其他相關文章!