std::vector::resize() 與std::vector::reserve()
在C 中,std::C 中,std::向量是一種常用的容器,用於儲存相同類型的元素。它提供了兩種方法,std::vector::reserve() 和 std::vector::resize(),它們在記憶體管理中發揮不同的作用。
std::vector::reserve()
std::vector::resize()
std::vector::resize()
std::vector::resize()
將向量大小調整為指定大小,根據需要新增或刪除元素。 使用預設值初始化新加入的元素。
可能會導致要重新分配向量的內存,可能會使現有引用、迭代器或指針無效。
提供的程式碼中的應用程式
在給定的範例程式碼中,成員向量my_member 最初使用std::vector::reserve() 為n_dim 元素分配記憶體。但是,沒有初始化任何元素,並且存取超出當前邏輯大小 (0) 的元素將導致未定義的行為或錯誤。 要將元素寫入向量,std::vector::resize() 應該是用過的。在這種情況下,它會將向量大小調整為 n_dim 並將所有元素初始化為零。 VS2010 SP1 行為提供的測試程式碼在使用 VS2010 SP1 的偵錯版本中失敗,因為它嘗試存取邏輯大小僅為 0 的向量的元素 5。這被視為未定義行為並導致調試崩潰結論根據提供的信息,當需要將元素寫入向量時,使用std::vector: :resize() 是正確的。當知道將來會發生插入並且應提前為其保留內存,但元素值不需要預先初始化時,應使用 std::vector::reserve()。以上是`std::vector::reserve()` 與 `std::vector::resize()`:何時使用哪一個來實現高效率記憶體管理?的詳細內容。更多資訊請關注PHP中文網其他相關文章!