原文:
c++的 bitset 在 bitset 標頭檔案中,它是一種類似陣列的結構,它的每乙個元素只能是0或1,每個元素僅用1bit空間。
常用函式:
bitset<8> foo ("10011011");
cout << foo.count() << endl; //5 (count函式用來求bitset中1的位數,foo中共有5個1
cout << foo.size() << endl; //8 (size函式用來求bitset的大小,一共有8位
cout << foo.test(0) << endl; //true (test函式用來查下標處的元素是0還是1,並返回false或true,此處foo[0]為1,返回true
cout << foo.test(2) << endl; //false (同理,foo[2]為0,返回false
cout << foo.any() << endl; //true (any函式檢查bitset中是否有1
cout << foo.none() << endl; //false (none函式檢查bitset中是否沒有1
cout << foo.all() << endl; //false (all函式檢查bitset中是全部為1
注:test函式會對下標越界作出檢查,而通過 [ ] 訪問元素卻不會經過下標檢查,所以,在兩種方式通用的情況下,選擇test函式更安全一些。
bitset<8> foo ("10011011");
cout << foo.flip(2) << endl; //10011111 (flip函式傳引數時,用於將引數位取反,本行**將foo下標2處"反轉",即0變1,1變0
cout << foo.flip() << endl; //01100000 (flip函式不指定引數時,將bitset每一位全部取反
cout << foo.set() << endl; //11111111 (set函式不指定引數時,將bitset的每一位全部置為1
cout << foo.set(3,0) << endl; //11110111 (set函式指定兩位引數時,將第一引數位的元素置為第二引數的值,本行對foo的操作相當於foo[3]=0
cout << foo.set(3) << endl; //11111111 (set函式只有乙個引數時,將引數下標處置為1
cout << foo.reset(4) << endl; //11101111 (reset函式傳乙個引數時將引數下標處置為0
cout << foo.reset() << endl; //00000000 (reset函式不傳引數時將bitset的每一位全部置為0
型別轉換。
bitset<8> foo ("10011011");
string s = foo.to_string(); //將bitset轉換成string型別
unsigned long a = foo.to_ulong(); //將bitset轉換成unsigned long類
unsigned long long b = foo.to_ullong(); //將bitset轉換成unsigned long long型別
cout << s << endl; //10011011
cout << a << endl; //155
cout << b << endl; //155
以上內容摘自 舉個栗子、 大佬的部落格。 c bitset 基本用法
bitset儲存二進位制數字。bitset就像乙個bool型別的陣列一樣,但是有空間優化 bitset中的乙個元素一般只佔1 bit,相當於乙個char元素所佔空間的八分之一。bitset中的每個元素都能單獨被訪問,例如對於乙個叫做foo的bitset,表示式foo 3 訪問了它的第4個元素,就像陣...
this用法小結
this主要是用作引用乙個類的當前例項物件,也可以用在擴充套件方法裡面,我主要總結一下前者的主要用途。1.用來限定被相同名字隱藏的類成員。這裡主要指的就是建構函式。比如 public employee4 string name,string id 這是乙個類的建構函式,this.name是之前宣告的...
C bitset類的使用
因為無知而學習,因為學習而更感無知。在刷題過程中遇到不少的位操作,這裡有必要學習一下c 內建的bitset類。歡迎各位指出文中的錯誤。本文主要內容 1.bitset類的函式使用 2.自己實現的mybitset類 主要參考 c primer include 包含標頭檔案,是標準庫的標頭檔案 inclu...