Scott Meyers'in Etkili STL kitabının 18. Maddesi : Standart Şablon Kütüphanesi Kullanımınızı Geliştirmenin 50 Özel Yolu,vector <bool> bir STL konteyneri olmadığı ve gerçekten bools tutmadığı için kaçınmanız gerektiğini söylüyor .
Aşağıdaki kod:
vector <bool> v;
bool *pb =&v[0];
STL kapsayıcılarının bir gerekliliğini ihlal ederek derlenmez.
Hata:
cannot convert 'std::vector<bool>::reference* {aka std::_Bit_reference*}' to 'bool*' in initialization
vector<T>::operator []dönüş türünün olması gerekiyor T&, ancak neden özel bir durum vector<bool>?
Ne yok vector<bool>gerçekten oluşur?
Öğe ayrıca şunları söylüyor:
deque<bool> v; // is a STL container and it really contains bools
Bu, alternatif olarak kullanılabilir vector<bool>mi?
Lütfen bunu açıklayabilir misiniz?