如果我有一个
vector<bool> vec_bool
,那么我不能使用|=
赋值运算符来修改向量的内容。也就是说,以下这行代码:vec_bool[0] |= true;
vec_bool[0] |= vec_bool[1];
编译器会报错,而这些行
bool a = false;
a |= true;
a |= vec_bool[0];
vec_bool[0] = vec_bool[0] | vec_bool[1];
vec_bool[0] = vec_bool[0] || vec_bool[1];
vector<int> vec_int(3);
vec_int[0] |= vec_int[1];
不要这样做。这是什么原因呢?
gcc 给出的错误信息如下:
test.cpp:21:17: error: no match for ‘operator|=’ (operand types are ‘std::vector::reference {aka std::_Bit_reference}’ and ‘bool’)
std::vector<bool>
不是一种普通的向量。它不是一个实际的bool
向量,而更像是一组位(bit)向量,其实现并未在 C++ 规范中指定。 - Some programmer dudevector<bool>
有两个问题。它不是一个向量,也不能存储布尔值”。 - Happy Green Kid Naps