电脑
C++编译器
如何声明一个 bitset?bitset
bitset 每一位中存储的数值为 0 或 1,初始值为 0,因此,bitset 可以看做是一个极大的二进制数由于它每 8 位才占用 1 字节,所以 n 位 bitset 执行一次位运算的时间复杂度约为 O(n/32),效率十分可观该图片来自于网络
bitset 的各种内置函数1. '[]' 随机访问操作符因为 bitset 是一个左闭右开的容器,所以一个 n 位的 bitset 合法访问下标范围为 0~n-1,即一个 100000 位的 bitset 最高可以访问到 99999当然,随机访问也可以赋值,但只能为 0/1
2. set()/reset()/flip()将该 bitset 所有位赋为1/所有位赋为0/所有位取反(即0变为1,1变为0)
3. set(k,x)/reset(x)/flip(x)将该 bitset 第k位赋为x/第x位赋为0/第x位取反b.reset(x) 等价于 b[x]=0 等价于 b.set(x,0)b.set(k,x) 等价于 b[k]=xb.flip(x) 等价于 b[x]=~b[x]
4. count()返回该 bitset 有多少位为 1
5. any()/none()判断该 bitset 是否至少有 1 位为 1 /全部为 0可以说,这两个函数正好相反,如果 any() 为 true,则 none() 为 false
bitset 还有一个使用的小技巧,它可以很方便地帮我们将十进制数转化为二进制数cout<
以上就是 bitset 的主要使用方法,由于 bitset 的实现方法,它的效率十分之高,通常用来优化算法,为编程提供新的思路
所有STL容器都是左闭右开,bitset 也不例外,随机访问时千万别越界!
如果这篇经验帮到了您,就请投票+收藏吧,谢谢!