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