gpt4 book ai didi

c++ - std::vector resize() 的未定义行为

转载 作者:太空狗 更新时间:2023-10-29 22:57:32 26 4
gpt4 key购买 nike

#include <vector>
int main()
{
try {
std::vector<bool> a;
a.resize(a.max_size() - 100000000);
}
catch (...) {
return -1;
}
return 0;
}

我尝试使用 VS2015 x86 运行此程序,但它在 resize() 中崩溃并显示“访问冲突”。我想知道是否有任何未定义的行为? C++ 标准对此有何规定?

最佳答案

vector<bool>并不总是表现得像一个 vector ,它从不实际存储 bools,而是 bools 的打包表示,旨在保存空间(位域)。 vector<bool>不满足的要求STL 容器,你最好不要使用它。 deque<bool>和 bitset 是替代品几乎肯定会满足您对所 promise 功能的需求的数据结构通过 vector<bool> .

关于c++ - std::vector<bool> resize() 的未定义行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43673375/

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