O item 18 do livro de Scott Meyers STL eficaz: 50 maneiras específicas de melhorar seu uso da biblioteca de modelos padrão diz para evitar, vector <bool>pois não é um contêiner STL e realmente não contém bools.
O seguinte código:
vector <bool> v;
bool *pb =&v[0];
não irá compilar, violando um requisito de contêineres STL.
Erro:
cannot convert 'std::vector<bool>::reference* {aka std::_Bit_reference*}' to 'bool*' in initialization
vector<T>::operator []O tipo de retorno deveria ser T&, mas por que é um caso especial vector<bool>?
Em que vector<bool>realmente consiste?
O item diz ainda:
deque<bool> v; // is a STL container and it really contains bools
Isso pode ser usado como uma alternativa para vector<bool>?
Alguém pode explicar isso?
bool, já que o elemento não tem seu próprio endereço.
std::vector<bool> v;irá compilar. &v[0]não (levando endereço de um temporário).
vector<bool>tem uma má reputação, mas não totalmente justificável: isocpp.org/blog/2012/11/on-vectorbool