bitset<MAXN> bt;            //  bt 包括 MAXN 位,下标 0 ~ MAXN - 1,默认初始化为 0

bitset<MAXN> bt1(0xf);      //  0xf 表示十六进制数 f,对应二进制 1111,将 bt1 低 4 位初始化为 1

bitset<MAXN> bt2(012);      //  012 表示八进制数 12,对应二进制 1010,即将 bt2 低 4 位初始化为 1010

bitset<MAXN> bt3("1010");  //  将 bt3 低 4 位初始化为 1010

bitset<MAXN> bt4(s, pos, n);//  将 01 字符串 s 的 pos 位开始的 n 位初始化 bt4

bt.any()        //  bt 中是否存在置为 1 的二进制位?

bt.none()      //  bt 中不存在置为 1 的二进制位吗?

bt.count()      //  bt 中置为 1 的二进制位的个数

bt.size()      //  bt 中二进制位的个数

bt[pos]        //  访问 bt 中在 pos 处的二进制位

bt.test(pos)    //  bt 中在 pos 处的二进制位是否为 1

bt.set()        //  把 bt 中所有二进制位都置为 1

bt.set(pos)    //  把 bt 中在 pos 处的二进制位置为 1

bt.reset()      //  把 bt 中所有二进制位都置为 0

bt.reset(pos)  //  把 bt 中在pos处的二进制位置为0

bt.flip()      //  把 bt 中所有二进制位逐位取反

bt.flip(pos)    //  把 bt 中在 pos 处的二进制位取反

bt[pos].flip()  //  同上

bt.to_ulong()  //  用 bt 中同样的二进制位返回一个 unsigned long 值

os << bt        //  把 bt 中的位集输出到 os 流

重要的一点,bitset<40> bt(a)可以将a转化成二进制存储。

最重要的一点,bitset可以O(1)做位运算。