Scott Meyers 的书 有效的 STL: 改善标准模板库使用的50个具体方法的第18条说要避免 vector <bool>
,因为它不是 STL 容器,也不能真正容纳 bool
。
以下代码:
vector <bool> v;
bool *pb =&v[0];
将不会编译,违反了 STL 容器的要求。
错误:
cannot convert 'std::vector<bool>::reference* {aka std::_Bit_reference*}' to 'bool*' in initialization
vector<T>::operator []
返回类型应该是 T&
,但是为什么它是 vector<bool>
的特例呢?
vector<bool>
到底由什么组成?
该条款进一步说:
deque<bool> v; // is a STL container and it really contains bools
这可以作为 vector<bool>
的替代品吗?
有人能解释一下吗?