gpt4 book ai didi

c++ - std::vector 保证默认所有条目为假?

转载 作者:IT老高 更新时间:2023-10-28 21:40:52 26 4
gpt4 key购买 nike

我希望将 std::vector 中的所有条目调整为所需的容器大小后都为 false。这似乎是测试的情况,但我似乎找不到任何文件可以保证总是如此。

我意识到我可以自己将所有内容都设置为 false,但如果已经保证每个条目都默认为 false,这似乎效率低下(它是一个大小合适的 vector ,将在数千个地方创建)。

对此有任何保证吗?提前致谢。

最佳答案

resize将默认插入元素,按照 (C++11) 标准调用:

allocator_traits<bool>::construct(m, p)

在哪里 m是分配器,p指向目标地址。

这反过来(假设 m 是标准分配器)调用

m.construct(p)

依次调用

::new((void *)p) bool()

所以你的bool最终被值初始化,对于 bool s 表示零初始化,即false .

如果 m是一个自定义分配器,由于某种原因缺少 construct() ,它最终仍然被值初始化。


正如已经指出的 std::vector<bool>不使用标准分配器,仍然 resize()被定义为

void resize(size_type sz, bool c = false);

所以结果是一样的。

关于c++ - std::vector<bool> 保证默认所有条目为假?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22983707/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com