首頁 > 後端開發 > C++ > 如何減少`std::vector`的容量?

如何減少`std::vector`的容量?

Patricia Arquette
發布: 2024-10-29 03:07:30
原創
733 人瀏覽過

 How to Reduce the Capacity of a `std::vector`?

調整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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板