meryngii.neta

今日も新たな"ネタ"を求めて。

vector

vectorって特殊化されてたのか…。知らなかった。

namespace std
{

template <class Allocator>
class vector<bool, Allocator>
{
    /* ... */
};

}

使うなと言っている人もいるようだ。(Tips.68)
http://www.sun-inet.or.jp/~yaneurao/intensive/tips2.html
特殊化されている割にはビット列としてはこれといって大した機能がなく、vectorの強みである「メモリの連続性」もないというのがお勧めできない理由のようだ。(普通のvectorでも規格で連続性が保障されているわけではないらしい。)
似たようなものに固定長のbitsetや、vectorの強化版のboost::dynamic_bitsetなどがある。
http://www.kmonos.net/alang/boost/classes/dynamic_bitset.html
要は使い分けなのだが、根本的に1ビットごとにケチケチとデータを扱うライブラリはむしろ組み込み向けで作ったほうがよいのではないだろうか。