調整std::vector 的大小:修剪多餘的容量
問題:如何縮小std::vector的大小回收未使用的空間並減少容量?
答案:要將 std::vector 縮小到目前大小,您可以利用 Scott Meyers 在《Effective STL》中建議的「交換技巧」(第 17 項)。其工作原理如下:
1.建立臨時向量:
建立一個與原始向量具有相同資料類型的臨時 std::vector。
<code class="cpp">vector<Person> temp(persons); // Assuming 'persons' is the original vector</code>
2.交換向量:
使用 swap() 函數將原始向量與暫時向量交換。
<code class="cpp">persons.swap(temp);</code>
說明:
std::vector 複製建構子僅為複製所需數量的元素分配記憶體。透過交換向量,您實際上創建了一個適合原始向量當前大小的新向量。然後,原始向量從臨時向量接收新分配的大小,有效地修剪多餘的容量。
這種方法非常高效,且不涉及複製單一元素。它依賴交換操作,這是一個恆定時間的操作。
以上是如何減少`std::vector`的容量?的詳細內容。更多資訊請關注PHP中文網其他相關文章!