首先我们来说一下什么是bitset 。 在我看来 bitset 就是一个放二进制 0.1的容器,它可以进行一些二进制可以进行的操作比如说或、且左移、右移等等。与普通的二进制位上进行的操作是相同的,不同之处在于 bitset 可以声明非常大的二进制位而不是仅仅限制于64这样小的范围。并且它又保留了位运算快的优势。
bitset 的声明 :
#include <bitset>
bitset <N> bc;
其中 N是一个确定的整数。
这样就声明了 一个 bitset ;
基本操作 :
你可以把bitset 当作一个二进制数组来使用。但它自身也有自身的函数 想vector 等容器一样。
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值
os << b
把b中的位集输出到os流
当然 bitset 也可以开二维也是可以的。