C Primer學習札記 標準bitset庫

2021-06-21 21:38:33 字數 1229 閱讀 5034

一 標準庫bitset型別

標準庫提供bitset類來進行位集的處理,同其他的一些標準庫一樣,要使用bitset類就必須包含系相關標頭檔案

#includeusing std::bitset;
二 bitset物件的定義和初始化

bitsetb;//b有n位,每位都為0

bitsetb(u);//b是乙個unsigned long型的乙個副本

bitsetb(s);//b是string物件s中含有位串的副本

bitsetb(s,pos,n);//b是s中從位置pos開始的n個位的副本

注:1. bitset型別長度大於unsigned long值的二進位制位數,高位為0。若beiset型別長度小於unsigned long,則高位丟棄

2.從string物件的讀入位集的順序是從右往左

eg. string str(「1100」);

bitset<32> b(str); //b中2位和3位為1

3.不一定要把整個string物件都作為bitset物件的初始值,相反,可以只用子串作為初始值

string str("111001100110011");

bitset<32> b1(str,5,4);//b1從3位到0位為1100,其餘位為0

bitset<32> b2(str,str.size()-4);//使用最後的4的字元

二 bitset物件操作

b.any();//b中是否存在為1的位

b.none();//b中沒有乙個為1的位,返回true

b.count();//統計b中為1的個數

b.size();//b中二進位制的位數

b[pos];//訪問b中pos處二進位制位

b.test(pos);//測試pos的位是否為1

b.set();//所有二進位制設定為1

b.set(pos);//pos位置設定為1

b.reset();//b中所有為為0

b.reset(pos);//pos位設定為0

b.flip();//b中所有的位逐位取反

b.flip(pos);//pos位取反

b.to_ulong();//用b中同樣的二進位制位返回乙個unsigned long值

os<

注:count和size操作的返回型別是標準庫中命名為size_t的型別。size_t定義在cstddef標頭檔案中

C primer札記10 繼承

包。繼承,多型性c 的三個基本概念,在這裡,我們重點總結繼承的東西 1 類派生列表 類派生列表中指定乙個派生類繼承基類,來自列表與乙個或多個基類如 class b public a1,protected a2,private a3 可是單繼承時最常見的,多繼承不多見 2 派生類的定義 派生類繼承時,...

C Primer 學習札記 左值和右值

c primer p121 當乙個物件被用作右值的時候,用的是物件的值 內容 當物件被用作左值的時候,用的是物件的身份 在記憶體中的位置 乙個重要的原則 在需要右值的地方可以用左值來代替,但是不能把右值當成左值 也就是位置 使用。當乙個左值被當成右值使用時,實際使用的是它的內容 值 到目前位置,已經...

c primer 第四版 學習札記 9 24

1 ex4 22 const char cp hello int cnt while cp while cp 解釋兩個迴圈的不同 我的理解是第乙個迴圈是判斷cp指標是否為空作為迴圈條件的,而 cp的操作並不會讓cp為空,所以迴圈會持續進行,直到出錯 也許會是個大錯誤,因為都不知道會訪問到記憶體的何處...