C++ベース——bitsetとvector


bitsetテンプレートクラスの大きな欠陥は、その長さが固定されており、事前に長さを指定しなければならないことです.
C++テンプレートライブラリは、コンテナによって実現されるbitビットを操作する別のメカニズム、すなわちvector<bool>,vector<T>の特化バージョンを提供する.bitset<sz>vector<bool>の主な違いは、bitsetが独自のメカニズムを持っていることであり、vector<bool>は通常のSTLインタフェース仕様に従っていることである.ビットセット式のビット別処理は実現できないが、v3 = v1 & v2;:
bool arr[] = {1, 0, 0, 1, 1};
bool arr2[] = {0, 1, 0, 1, 1};
vector<bool> v1(arr, arr+5), v2(arr2, arr2+5);
vector<bool> v3(v1.size());
std::transform(v1.begin(), v1.end(), v2.begin(), 
            v3.begin(), std::logical_and<int>());
copy(v3.rbegin(), v3.rend(), ostream_iterator<bool>(cout));