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