首頁 > 後端開發 > C++ > `std::vector::resize()` 和 `boost::container::vector::resize()` 是否在 C 標準中表現出一致的零初始化行為?

`std::vector::resize()` 和 `boost::container::vector::resize()` 是否在 C 標準中表現出一致的零初始化行為?

Patricia Arquette
發布: 2024-12-04 08:45:12
原創
796 人瀏覽過

Does `std::vector::resize()` and `boost::container::vector::resize()` Exhibit Consistent Zero-Initialization Behavior Across C   Standards?

Vector::resize() 行為在 C 11 和 Boost.Container 下一致嗎?

std::vector:: 的行為resize() 通常用於臨時緩衝數據,在使用前將其調整為適當的大小。在 C 03 中,std::vector::resize() 透過複製建立新元素,但 C 11 引入了一個重載,無需複製即可初始化新元素。

Boost.Container 為 boost:: 提供了額外的 default_init 重載: container::vector::resize(),用預設值初始化新元素。此功能符合 C 11 只為您需要的東西付費的設計理念。

在 C 03 和 C 11 模式下測試 std::vector 和 boost::container::vector 的行為時,出現了意想不到的結果被觀察到。在 C 03 和 C 11 中,在不指定初始化的情況下調整向量大小仍然會導致 std::vector 和 boost::container::vector 的新元素初始化為零。

此行為表示介面發生了變化std::vector 中的內容對實作沒有影響,且 resize() 中新增的最終元素仍以零初始化。提出的問題是這種行為是否正確。

以上是`std::vector::resize()` 和 `boost::container::vector::resize()` 是否在 C 標準中表現出一致的零初始化行為?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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