您的位置:首页 > 编程语言 > C语言/C++

C++基础——bitset与vector<bool>

2015-11-04 23:47 639 查看
bitset模板类的一大缺陷(通过其模板形式即知)是:其长度固定,且你必须事先指定其长度。

C++模板库提供了另外一种通过容器的方式实现的操作bit位的机制,也即
vector<bool>
vector<T>
的一种特化版本。

bitset<sz>
vector<bool>
的一个主要区别在于,bitset拥有一套属于自己的机制,而
vector<bool>
遵循的是普通的STL接口规范。虽然不能实现bitset式的按位处理,但仍然可以通过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));
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c++ bitset vector