STL之bitset使用

bitset存储二进制数位。它的一个元素一般只占1 bit,相当于一个char元素所占空间的八分之一。

基本操作包括:

  • 初始化赋值

    • 直接通过数字赋值

      1
      2
      bitset<8> a = 0x5;
      bitset<8> b= 12;
    • 用string对象初始化bitset对象

      1
      2
      3
      4
      string str = strval("1100");
      bitset<8> a(str);
      bitset<8> b(str, 2, 1); // 从str[2]开始,长度为1,初始化b
      bitset<8> b(str, 2); // 从str[2]开始,到字符串结束
    • 类型相同的bitset可以直接赋值

  • bitset对象操作

    函数 作用
    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值
    b.to_string() 把b中的位集转换为string的结果
  • 访问bitset对象中的位

    可以通过下标来实现对bitset某位的访问

bitset可以通过数字,字符串进行赋初值

但bitset不能直接赋值给int

bitset的1位可以赋值给int