转自https://blog.youkuaiyun.com/wang2332/article/details/79155362
什么是bitset?
bitset是储存二进制位的,就像一个bool型的数组一般 但是空间被优化到了只占一个bit
bitset支持下标访问
bitset头文件必须包含bitset,但是它的对象定义不同于其他STL,是其长度而不是类型,所以在定义bitset时候,必须要明确bitset包含了多少位,在其括号内给出常数位或者const已经定义的对象
#
#include <bits/stdc++.h>
using namespace std;
const int MAXN = 8;
bitset<8> bt;
bitset<MAXN> btt;
bitset<8> bt_1(0x3f);
bitset<8> bt_3(0x3f3f);
bitset<16> bt_2(string("11110000"));
int main()
{
cout << bt << endl;
cout << btt << endl;
cout << bt_1 << endl;
cout << bt_2 << endl;
cout << bt_3 << endl;
return 0;
}
输出结果
00000000
00000000
00111111
0000000011110000
00111111
关于bitset的各种操作
#include <bits/stdc++.h>
using namespace std;
const int MAXN = 8;
bitset<MAXN> bt;
int main()
{
int x = (int)bt.size();
//返回位数大小
cout << x << endl;
x = bt.count();
//返回1的个数
cout << x << endl;
x = bt.any();
//返回是否含有1
cout << x <<endl;
x = bt.none();
//返回是否没有1
cout << x <<endl;
x = bt.set(p);
// 将p+1位变成1
cout << x <<endl;
x = bt.set(p,m);
//将第p+1位变位x
x = bt.reset();
//全部位数变为0
x = bt.reset(p);
//第p+1位变为0
x = bt.flip();
//全部位数都取反
return 0;
}