Punkt 18 von Scott Meyers 'Buch Effective STL: 50 Spezifische Möglichkeiten zur Verbesserung Ihrer Verwendung der Standardvorlagenbibliothek sollten vermieden werden , vector <bool>da es sich nicht um einen STL-Container handelt und nicht wirklich bools enthält.
Der folgende Code:
vector <bool> v;
bool *pb =&v[0];
wird nicht kompiliert, was eine Anforderung von STL-Containern verletzt.
Error:
cannot convert 'std::vector<bool>::reference* {aka std::_Bit_reference*}' to 'bool*' in initialization
vector<T>::operator []Rückgabetyp soll sein T&, aber warum ist es ein Sonderfall für vector<bool>?
Woraus besteht vector<bool>eigentlich?
Der Artikel sagt weiter:
deque<bool> v; // is a STL container and it really contains bools
Kann dies als Alternative zu verwendet werden vector<bool>?
Kann das bitte jemand erklären?
bool, da das Element keine eigene Adresse hat.
std::vector<bool> v;wird kompiliert. &v[0]wird nicht (Adresse eines temporären nehmen).
vector<bool>hat einen schlechten Ruf, aber nicht ganz zu Recht: isocpp.org/blog/2012/11/on-vectorbool