zoukankan      html  css  js  c++  java
  • C++ 头文件系列 (bitset)

    简介

    该头文件有关位集,实际上是vector对应的固定大小版本(fix-sized),位的大小在编译期固定。

    位本质上对应bool的概念,只有0或1,true或false两种对立的值。 但很可惜,字节才是机器上最小的存储单元,所以bool基本上是由一个字节大小。

    bitset是出于高效的空间利用为目的才出现的。

    位操作

    • operator [] : 通过下标访问bit。
    • count : 计数位值为1的位个数。
    • size : 返回位的大小,即有多少个位。
    • test : 测试下标指向的位值是否为1。
    • any : 判断是否有任何一个位值为1。
    • none : 判断是否没有任何一个位值为1.
    • all : 判断是否所有位值为1.
    • set : 设置某一个位值为1.
    • reset : 重置某一个位值为0.
    • flip : 翻转某一个位值,即0变1,1变0.

    转换函数

    • to_string : 转换成字符串。
    • to_ulong : 转换成unsigned long。
    • to_ullong : 转换成unsigned long long。

    位集操作

    在这里,bitset可以看成以01位代表的整数。 对于整数,我们又很多操作可以执行:亦或左移等等。 头文件重载了这些操作符,方便我们对位集进行运算:

    • &、&=
    • |、|=
    • =
    • <<、<<=
    • >>、>>=
    • ~
    • ==
    • !=

    reference type

    因为C++最小的内置类型大小是1个字节,而bit概念上只需要1个bit,所以,与vector一样,bitset也有一个代理成员类reference, 用来执行bit相关的操作。

  • 相关阅读:
    vim复制
    嵌入式Linux学习(二)
    (Java实现) 洛谷 P1042 乒乓球
    (Java实现) 洛谷 P1042 乒乓球
    (Java实现) 洛谷 P1071 潜伏者
    (Java实现) 洛谷 P1071 潜伏者
    (Java实现) 洛谷 P1025 数的划分
    (Java实现)洛谷 P1093 奖学金
    (Java实现)洛谷 P1093 奖学金
    Java实现 洛谷 P1064 金明的预算方案
  • 原文地址:https://www.cnblogs.com/lgxZJ/p/6384991.html
Copyright © 2011-2022 走看看