bitset基础

一直懒得学orz

bitset的移位等位运算复杂度都为w/32(w为bitset位数),故常用bitset优化加减操作,如1+2可转化为(000010)<<2=(0001000)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
const int n=16,k=15;
bitset<n> bs;//定义一个n位的bitset,n必须为常量
string s1="100001";
char s2[]="100001";
bitset<6> bs(s1);
bitset<6>bs(s2);//用字符串初始化
bs.set();//将所有位都变为1
bs.reset();//将所有位变为0
bs.flip();//将所有位取反
bs.reset(k);//将bs[k]置为0,同理flip
//k从0开始(同数组)
bs.set(k,v);//将bs[k]置为v,等价于bs[k]=v
bs.any();//若存在bs[k]为1,则返回true
bs.none();//若不存在bs[k]为1,则返回true
bs.all();//若bs全为1,则返回true
bs.count();//返回bs中1的个数
bs.to_string();//返回将bs转化为string后的对象
bs.to_ulong();//同理
bs.to_ullong();//同理