C++ bitset用法

概念:

  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…)

posted @ 2018-03-16 16:37  EvalonXing  阅读(583)  评论(2编辑  收藏  举报