bitset相当于一个bool数组,但是优点是两个bitset之间可以进行按位运算。
bitset<1000>a//初始值全是0
/*
string s="1010101"
bitset <1000>a1(s);
*/
bitset<4> foo (string("1001"));
bitset<4> bar (string("0011"));
foo^=bar; //1010(foo对bar按位异或后赋值给foo)
foo&=bar; //0010(按位与后赋值给foo)
foo|=bar; //0011(按位或后赋值给foo)
foo<<=2; //1100(左移2位,低位补0,有自身赋值)
foo>>=1; //0110(右移1位,高位补0,有自身赋值)
a.set() //将所有位变成1
a.set(k) //将第k位变成1,超限会报错
a.set(k,1);
a.set(k,0);
a.reset() //清空bitset
a.reset(k) //把第k位变成0
a.flip() //将所有位按位取反
a.flip(k) //将第k位按位取反
a.count() //返回bitset中1的个数
a.all() //若bitset内全是1返回1,否则返回0