C++ベース——bitsetとvector
bitsetテンプレートクラスの大きな欠陥は、その長さが固定されており、事前に長さを指定しなければならないことです.
C++テンプレートライブラリは、コンテナによって実現されるbitビットを操作する別のメカニズム、すなわち
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));