C 11 vector::resize() 标准和 Boost 容器库的行为
vector::resize() 在 C 中进行了大修11 提供对元素初始化的更精细的控制。然而,人们对其在 C 03 模式下的标准库和 Boost.Container 下的行为提出了担忧。
标准库
向量::resize() C 11 之前的标准库中的函数允许通过传递值来初始化元素。然而,在 C 11 中,该函数被分为两个重载:一个用于值初始化,另一个用于通过复制进行初始化。
Boost.Container
Boost.Container 也提供了 vector::resize() 的三种重载:值初始化、默认初始化(Boost 特定功能)和通过以下方式初始化
观察
最近的测试表明,标准库和 Boost.Container 中的 resize() 行为与 C 03 模式下的预期不一致。虽然理想情况下 resize() 在所有三个测试(值、默认和复制初始化)中的行为应该相同,但结果表明,只有专门请求默认初始化的测试才会产生所需的输出。
结论
行为上的差异表明 C 11 中的 vector::resize() 接口更改可能尚未完全生效,因为在在标准和 Boost.Container 测试中,最终的 resize() 调用仍然使用零进行初始化,而没有显式的默认初始化。需要进一步调查以确定此行为的原因。
以上是`vector::resize()` 在 C 03 中与标准和 Boost 容器库的行为有何不同?的详细内容。更多信息请关注PHP中文网其他相关文章!