bitset基本操作

bitset是用来进行一些状态储存的操作。类似于一个标记数组,又类似于状压里面的二进制。

它与状压的共同点是都可以直接进行一些二进制操作。而且好用的是它类似于动态数组,可以开很多位。

需要调用bitset库。


申请:

bitset<100000> b;

进行一些与二进制相同的操作:

b<<1;//b整体左移
b|=10; //b或 1010

位数也是左边是高位,右边是低位。从0开始。可以直接访问为b[0]


bitset操作

操作 意义
b.any( ) b中是否存在置为1的二进制位?
b.none( ) b中不存在置为1的二进制位吗?
b.count( ) b中置为1的二进制位的个数
b.size( ) b中二进制位的个数
b[pos] 访问b中在pos处的二进制位
b.test(pos) b中在pos处的二进制位是否为1?
b.set( ) 把b中所有二进制位都置为1
b.set(pos) 把b中在pos处的二进制位置为1
b.reset( ) 把b中所有二进制位都置为0
b.reset(pos) 把b中在pos处的二进制位置为0
b.flip( ) 把b中所有二进制位逐位取反
b.flip(pos) 把b中在pos处的二进制位取反
b.to_ulong() 用b中同样的二进制位返回一个unsigned long值

上一篇:HDU 5036 Explosion (传递闭包+bitset优化)


下一篇:UVA - 242 Stamps and Envelope Size (完全背包+bitset)