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
  • 相关阅读:
    MySQL中的char与varchar详解
    有关PHPstorm的git环境的配置和git密钥的生成总结
    PHP开发中常用的字符串操作函数
    PHP 二维数组排序函数的应用 array_multisort()
    大龄程序员的出路在哪里
    近期面试总结(PHP后端开发工程师)(部分笔试题)
    B-Tree目录和Hash索引的区别
    curl、fopen和file_get_contents区别
    什么是OAuth授权
    SEO 统计算法
  • 原文地址:https://www.cnblogs.com/MartinLwx/p/14453956.html
Copyright © 2011-2022 走看看