首页 > 后端开发 > 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
原创
771 人浏览过

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
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板