18項 vector<bool>は使わないようにしよう
vector<bool>は使わないようにしよう
vector<bool>はboolの一つに1bitの領域を割り当てるという実装になっています。
vector<bool>の要素へのポインタを取得しようとすると、vector<bool>::reference*が返ります。
なので、下のコードはコンパイルできません。
vector<bool> v; ... bool *pb = &v[0]; //vector<bool>::reference*が返る
vector<bool>::reference*が用意されているのは、処理系依存のboolのサイズと1bitのvector<bool>が違っているからです。
代わりに、deque<bool>かbitsetを使います。deque<bool>の各要素は、処理系依存のboolのサイズと同じになります。