#include <vector>
int main()
{
try {
std::vector<bool> a;
a.resize(a.max_size() - 100000000);
}
catch (...) {
return -1;
}
return 0;
}
我尝试使用VS2015 x86运行此程序,但它在resize()
中使用&#34;访问冲突&#34;崩溃了。我想知道是否有任何未定义的行为? C ++标准对此有何看法?
答案 0 :(得分:1)
vector<bool>
并不总是表现得像一个向量,它实际上从不存储bool,而是一个用于保存的bool的压缩表示
空间(位域)。
vector<bool>
不满足要求
STL容器,你最好不要使用它。
deque<bool>
和bitset是替代方案
数据结构几乎肯定会满足您对承诺能力的需求
vector<bool>
。