簡介 該頭文件有關 位集 ,實際上是vector對應的固定大小版本(fix sized),位的大小在編譯期固定。 位 位本質上對應bool的概念,只有0或1,true或false兩種對立的值。 但很可惜,位元組才是機器上最小的存儲單元,所以bool基本上是由一個位元組大小。 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 : 轉換成unsigned long。
- to_ullong : 轉換成unsigned long long。
位集操作
在這裡,bitset可以看成以01位代表的整數。 對於整數,我們又很多操作可以執行:或、並、亦或、左移等等。 頭文件重載了這些操作符,方便我們對位集進行運算:
- &、&=
- |、|=
- ^、^=
- <<、<<=
- >>、>>=
- ~
- ==
- !=
reference type
因為C++最小的內置類型大小是1個位元組,而bit概念上只需要1個bit,所以,與vector