简单谈谈C++ 头文件系列之(bitset)
简介
该头文件有关位集,实际上是vector
位
位本质上对应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:转换成unsignedlong。
to_ullong:转换成unsignedlonglong。
位集操作
在这里,bitset可以看成以01位代表的整数。对于整数,我们又很多操作可以执行:或、并、亦或、左移等等。头文件重载了这些操作符,方便我们对位集进行运算:
&、&=
|、|=
^、^=
<<、<<=
>>、>>=
~
==
!=
referencetype
因为C++最小的内置类型大小是1个字节,而bit概念上只需要1个bit,所以,与vector