Scott Meyers の著書「Effective STL: 50 Specific Ways to Improvement Your Use of the Standard Template Libraryvector <bool>
」の項目 18 は、STL コンテナーではなく、実際には s を保持しないため、避けるように述べてい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>
か?
誰でもこれを説明できますか?