Articolo 18 del libro di Scott Meyers STL effettivo: 50 modi specifici per migliorare l'utilizzo della libreria di modelli standard dice di evitare vector <bool>
poiché non è un contenitore STL e in realtà non contiene i bool.Perché il vettore <bool> non è un contenitore STL?
Il codice seguente:
vector <bool> v;
bool *pb =&v[0];
non si compila, violando requisito di contenitori STL.
Errore:
cannot convert 'std::vector<bool>::reference* {aka std::_Bit_reference*}' to 'bool*' in initialization
vector<T>::operator []
tipo di ritorno si suppone che sia T &, ma perché si tratta di un caso speciale per vector<bool>
?
In cosa consiste veramente lo vector<bool>
?
La voce dice ancora:
deque<bool> v; // is a STL container and it really contains bools
questo può essere usato come alternativa al vector<bool>
?
Qualcuno può spiegare questo?
@ Chris e C++ 98. – Rapptz
@Rapptz e C++ 03! – Casey
È stato un errore di progettazione in C++ 98, ora mantenuto per compatibilità. – Oktalist