首頁 >後端開發 >C++ >`std::vector::reserve()` 與 `std::vector::resize()`:我什麼時候該使用哪一個?

`std::vector::reserve()` 與 `std::vector::resize()`:我什麼時候該使用哪一個?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-12-18 02:11:15726瀏覽

`std::vector::reserve()` vs. `std::vector::resize()`: When Should I Use Which?

std::vector::resize() 與std::vector::reserve()

使用動態陣列時C ,了解std::vector::reserve() 和std::vector::resize() 之間的差異很重要。兩者都有特定的用途,並且都會顯著影響性能。

std::vector::reserve()

顧名思義,reserve() 為指定的物件保留記憶體元素的數量而不改變向量的大小。如果您知道所需的最大元素數,這對於優化記憶體分配非常有用。它避免了當向量超出其當前容量時發生不必要的重新分配。

std::vector::resize()

另一方面,resize()兩者都保留記憶體並將向量大小調整為指定大小。與 Reserve() 不同,如果新大小大於目前大小,則 resize() 會在向量中加入空(或預設初始化)元素。如果新大小較小,超出新大小的元素將被截斷。

範例中的正確用法

在範例程式碼中,您正在嘗試編寫元素呼叫reserve()後到向量。這將導致在偵錯建置中出現錯誤,因為 Reserve() 不會調整向量的大小。要正確地將元素寫入向量,您需要使用resize():

void MyClass::my_method()
{
    my_member.resize(n_dim);
    for (int k = 0; k < n_dim; k++)
        my_member[k] = k;
}

結論

std::vector::reserve() 和std : :vector::resize() 有不同的用途。 Reserve() 最佳化記憶體分配,而 resize() 調整向量大小,同時保持內部資料有效性。透過了解它們的差異,您可以有效地使用它們來增強 C 程式碼的效能。

以上是`std::vector::reserve()` 與 `std::vector::resize()`:我什麼時候該使用哪一個?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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