Warum ist der Vektor <bool> kein AWL-Container?
Punkt 18 von Scott Meyers 'BuchEffektive STL: 50 spezifische Möglichkeiten zur Verbesserung der Verwendung der Standardvorlagenbibliothek sagt zu vermeidenvector <bool>
da es kein STL-Container ist und keine wirklichen Bools enthält.
Der folgende Code:
vector <bool> v;
bool *pb =&v[0];
wird nicht kompiliert, was gegen die Anforderungen von STL-Containern verstößt.
Error:
cannot convert 'std::vector<bool>::reference* {aka std::_Bit_reference*}' to 'bool*' in initialization
vector<T>::operator []
Der Rückgabetyp sollte T & sein, aber warum ist er ein Sonderfall fürvector<bool>
?
Was machtvector<bool>
wirklich bestehen aus?
Der Artikel sagt weiter:
deque<bool> v; // is a STL container and it really contains bools
Kann dies als Alternative zuvector<bool>
?
Kann jemand das bitte erklären?