bitset儲存二進位制數字。
bitset就像乙個bool型別的陣列一樣,但是有空間優化——bitset中的乙個元素一般只佔1 bit,相當於乙個char元素所佔空間的八分之一。
bitset中的每個元素都能單獨被訪問,例如對於乙個叫做foo的bitset,表示式foo[3]訪問了它的第4個元素,就像陣列一樣。
bitset有乙個特性:整數型別和布林陣列都能轉化成bitset。
bitset的大小在編譯時就需要確定。如果你想要不確定長度的bitset,請使用(奇葩的)vector
1、建構函式:
#includestd::bitset<4> foo; //建立乙個4位的位集,每一位預設為0
當整數的大小小於位數時,高位填充為0
std::bitset<4> foo(5); //用整數初始化 5二進位制位:101 foo值:0101
當整數的大小超過位數時,從整數二進位制的低位開始賦值,高位被捨棄
std::bitset<4> foo(19); //用整數初始化,19二進位制位:10011 foo值:1100
std::bitset<4> foo(std:;string("0101")); //字串初始化,字串中必須只能含有『0』/『1』
2、常用操作:
位運算都可以用: 與、或、非、異或,左移,右移
foo&foo2
foo|foo2
~foo
foo^foo2
foo<<=2
foo>>=2
foo.size() 返回大小(位數)
foo.count() 返回1的個數
foo.any() 返回是否有1
foo.none() 返回是否沒有1
foo.set() 全都變成1
foo.set(p) 將第p + 1位變成1
foo.set(p, x) 將第p + 1位變成x
foo.reset() 全都變成0
foo.reset(p) 將第p + 1位變成0
foo.flip() 全都取反
foo.flip(p) 將第p + 1位取反
foo.to_ulong() 返回它轉換為unsigned long的結果,如果超出範圍則報錯
foo.to_ullong() 返回它轉換為unsigned long long的結果,如果超出範圍則報錯
foo.to_string() 返回它轉換為string的結果
C bitset用法小結
原文 c 的 bitset 在 bitset 標頭檔案中,它是一種類似陣列的結構,它的每乙個元素只能是 或 每個元素僅用 bit空間。常用函式 bitset 8 foo 10011011 cout foo.count endl 5 count函式用來求bitset中1的位數,foo中共有 個 cou...
C bitset類的使用
因為無知而學習,因為學習而更感無知。在刷題過程中遇到不少的位操作,這裡有必要學習一下c 內建的bitset類。歡迎各位指出文中的錯誤。本文主要內容 1.bitset類的函式使用 2.自己實現的mybitset類 主要參考 c primer include 包含標頭檔案,是標準庫的標頭檔案 inclu...
C bitset學習筆記(超級簡化)
使用bitset需要引用標頭檔案。賦值 include using namespace std bitset 8 s int main o wn test有乙個引數pos,返回乙個bitset內第pos位的值。s.reset s.set 7 int k s.test 7 k is true k s....