zoukankan      html  css  js  c++  java
  • C++的bitset相关

    bitset特性简介

    • bitset是一个bool数组,空间复杂度上来说,会比同等长度的bool数组少一点

    • 可以单独访问某个bit位,就跟使用数组一样,注意索引是从后往前的

      • 举例来说⬇️

        bs:    1 0 1 0 1
        index: 4 3 2 1 0
        
    • 编译的时候bitset的大小就已经确定下来了,不能在运行的时候更改,所以我们在创建bitset的时候要用常量来初始化

    bitset的常用函数

    • 常见初始化方式

      bitset<4> bs1(15);
      cout << bs1 << endl;     // 输出15的二进制表示——1111
      
      bitset<4> bs2(string("0101"));
      cout << bs2 << endl;     // 输出我们用于初始化的比特串
      
    • 不同的bitset之间可以方便地位运算

      cout << (bs1 & bs2) << endl;    // 1111 & 0101 = 0101
      
    • bitset可以方便地输出为其他的格式

      cout << bs2.to_string('Y', 'N') << endl;    // 0101 -> NYNY
      cout << bs2.to_ulong() << endl;     // 0101 -> 5
      
    • bitset进行计数

      cout << bs2.count() << endl;    // 输出比特位一共有几个1,“0101”输出「2」
      cout << bs2.size() << endl;     // 输出长度,“0101”输出「4」
      
    • 检查bitset的每一位

      cout << bs2.any() << endl;      // 检查是否有任意一个比特位为1,输出「1」
      cout << bs2.all() << endl;      // 检查是否所有比特位都为1,输出「0」
      cout << bs2.none() << endl;     // 检查是否所有比特位都不为1,输出「0」
      
    • 修改bitset

      bs2.flip();             // 输出比特位的翻转
      cout << bs2 << endl;    // 输出「1010」
      
      bs2.set();              // 所有比特位设置为1
      cout << bs2 << endl;    // 输出「1111」
      
      bs2.reset();            // 所有比特位设置为0
      cout << bs2 << endl;    // 输出「0000」
      
    如有转载,请注明出处QAQ
  • 相关阅读:
    python中is和==的区别
    深拷贝和浅拷贝
    编码和解码
    with语句处理异常
    python中运行flask报错:UnicodeDecodeError: 'utf8' codec can't decodebyte 0xd5 in position 0:invalid continuation byte
    python中update的基本使用
    python中的程序控制结构
    python中的四种存储结构总结
    python中list,tuple,dict,set特点对比总结
    解决UIScrollview无故偏移和导航条遮挡view的问题
  • 原文地址:https://www.cnblogs.com/MartinLwx/p/14453956.html
Copyright © 2011-2022 走看看