概念:
bitset 是用来存储位的(其中的元素只有两种形式)
这个类通常用来模拟一个布尔数组,但对空间分配上进行了优化:通常,每个元素只占用一个 bit ,而通常 char 类型是它的八倍
每个位置上的位都可以被单独访问:例如,对于一个给定的名为 foo 的 bitset,foo[3] 表示访问 foo 的第四位,就像常规的数组访问它的元素一样。但是因为在大多的
c++ 环境中,没有元素类型是单个位的,所以单独的元素作为特殊的引用类型来访问
bitset 具有构建并转换为int和二进制字符串的功能,它也可以由 int 和 bool 数组转化得来
bitset 的大小在编译的时候就需要确定下来,如果不定长,可用 vector<int>
*用 bitset 需要 #include<bitset>
常用函数:(bitset 从 0 开始算下标,同数组)
size() 返回 bitset 的大小(位数)
count() 返回 bitset 中1的个数
all()返回bitset是否全为 1 (C++11)
any() 返回 bitset 中是否有 1
none() 返回 bitset 中是否没有 1
set() 将 bitset 的位全置为 1
set(pos) 将 bitset 的第 pos 位置为 1
set(pos, x) 将 bitset 的第 pos 位置为 x
reset() 将 bitset 的位全部置为 0
reset(pos) 将第 pos 位置为 0
flip() 将 bitset 的位全部取反
flip(pos) 将bitset的第 pos 位取反
test(pos) 返回第 pos 位(0 / 1) (最好不要用方括号 [] ,容易GG (反正我 GG 好几次))
to_string() 返回值为将将当前 bitset 转换为 string 的结果
to_ulong() 返回值为将当前 bitset 转换为 unsigned long 的结果
(如果爆了 unsigned long 数据范围,会RE…)