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
  • 相关阅读:
    linux安装教程
    html学习
    vscode编程nodejs初始安装
    Python 字符串前面加u,r,b的含义
    vs code中自动添加注释插件koroFileHeader
    *args和**kwargs用法
    python中map函数的用法
    Python中虚拟环境venv的基本用法
    ubuntu下安装git提示无root权限
    git连接gitee笔记
  • 原文地址:https://www.cnblogs.com/MartinLwx/p/14453956.html
Copyright © 2011-2022 走看看