如何有效減少std::vector 的容量
如果您發現自己的std::vector 容量過剩,您可能想知道是否剩下有辦法縮小它的大小以釋放記憶體。雖然沒有直接的方法,但有一種聰明的技術,稱為「交換技巧」。
交換技巧
根據 Scott Meyers 的《有效》第 17 條STL,您可以使用交換技巧來修剪向量的多餘容量。它的工作原理如下:
<code class="cpp">vector<Person>(persons).swap(persons);</code>
執行此交換後,名為“persons”的向量將“收縮以適應”,這意味著其容量將減少以匹配其包含的元素數量。
該技巧如何運作
此技巧利用了向量的複製構造函數僅為要複製的元素分配必要的內存量這一事實。透過建立一個與原始向量具有相同數量元素的新向量,複製建構函數會建立一個容量更小的新向量。
然後,swap 方法會交換原始向量和新向量的內容和容量。結果,原始向量的容量減少了。
以上是如何減少 std::vector 中的過剩容量:交換技巧解釋的詳細內容。更多資訊請關注PHP中文網其他相關文章!