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