Punkt 18 książki Scotta Meyersa Efektywny STL: 50 konkretnych sposobów na poprawę korzystania ze standardowej biblioteki szablonów mówi, aby tego unikać, vector <bool>ponieważ nie jest to kontener STL i tak naprawdę nie zawiera bools.
Poniższy kod:
vector <bool> v;
bool *pb =&v[0];
nie skompiluje się, naruszając wymóg kontenerów STL.
Błąd:
cannot convert 'std::vector<bool>::reference* {aka std::_Bit_reference*}' to 'bool*' in initialization
vector<T>::operator []zwracany typ ma być T&, ale dlaczego jest to specjalny przypadek vector<bool>?
Z czego tak vector<bool>naprawdę składa się?
Przedmiot dalej mówi:
deque<bool> v; // is a STL container and it really contains bools
Czy można to wykorzystać jako alternatywę dla vector<bool>?
Czy ktoś może to wyjaśnić?