在C 03 中,std::vector
使用 Boost.Container 的向量
但是,在 C 11 模式下,std::vector 和 Boost.Container 的向量仍然初始化使用用於值初始化的重載時帶有零的新元素。這就提出了一個問題:
C 11 std::vector::resize() 介面變更實際上有效嗎?
結果顯示介面變更並未達到預期效果,因為新元素仍在初始化中
附錄
為了解決現有分配器的限制性,我們提出了一種替代分配器適配器,它提供了一種更安全、更可靠的方法來實現值初始化,而無需初始化所有類型的元素:
template <typename T, typename A=std::allocator<T>> class default_init_allocator : public A { // ... implementation };
此適配器插入construct()調用以進行值初始化,將它們轉換為默認初始化呼叫。它還可以正確處理預設初始化。
以上是C 11 的 `std::vector::resize()` 介面是否有效更改值初始化新元素?的詳細內容。更多資訊請關注PHP中文網其他相關文章!