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 bool
s 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