在 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中文网其他相关文章!