ACM 中 bitset 的应用

来源:互联网 发布:淘宝如何刷流量 编辑:程序博客网 时间:2024/05/16 23:53

首先我们来说一下什么是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 也可以开二维也是可以的。
原创粉丝点击