C 標準庫 bitset 用法整理

2021-06-21 08:21:28 字數 2163 閱讀 8206

std::bitset是stl的一部分,準確地說,std::bitset是乙個模板類,它的模板引數不是型別,而整形的數值(這一特性是iso c++2003的新特性),有了它我們可以像使用陣列一樣使用位。下面看乙個例子:

#include

std::bitset<8> bs;//它是乙個模板,傳遞的引數告訴編譯器bs有8個位。

我們接著看上面的**,通過上面兩行的**我們得到乙個bitset的物件bs,bs可以裝入8個位,我們可以通過陣列的下標運算子來訪問:

bs[0]=1;//把第0位設定為1

bs[3]=true;//把第3位設定為1,因為true可以轉換為1

bs[7]=0;//這個大家都明白了

bitset被設計為開放的,也就是說乙個bitset物件可以轉換為其它型別的值,典型的,我們想把乙個整數設定成具有特定的位模式,我們可以簡單地把乙個bitset轉換為乙個整數:

unsigned long value=bs.to_ulong();

std::bitset<32> bs32(value);

bs32[15]=1;

value=bs32.to_ulong();

此外bitset還可以也字串互換,這樣我們就可以更直觀對bitset進行操作了,我只是簡單地把我們想要的」01「字串就可以了:

std::bitset<32> bs("011010101001");

std::string str=bs.to_string();

//***********************************====

bitsetb;

b有n位,每位都為0.引數n可以為乙個表示式.

如bitset<5> b0;則"b0"為"00000";

bitsetb(unsigned long u);

b有n位,並用u賦值;如果u超過n位,則頂端被截除

如:bitset<5>b0(5);則"b0"為"00101";

bitsetb(string s);

b是string物件s中含有的位串的副本

string bitval4("10011");

bitset<5> b0(bitval4);

則"b0"為"10011";

bitsetb(s, pos);

b是s中從位置pos開始位的副本,前面的多餘位自動填充0;

string bitval5("01011010");

bitset<10> b0(bitval5, 3);

則"b0" 為 "0000011010";

bitsetb(s, pos, num);

b是s中從位置pos開始的num個位的副本,如果numstring bitval5("11110011011");

bitset<6> b0(bitval5, 3, 6);

則"b0" 為 "100110";

// 流

os << b

把b中的位集輸出到os流

os >>b

輸入到b中,如"cin>>b",如果輸入的不是0或1的字元,只取該字元前面的二進位制位.

// 屬性方法

bool any()

是否存在置為1的二進位制位?和none()相反

bool none()

是否不存在置為1的二進位制位,即全部為0?和any()相反.

size_t count()

二進位制位為1的個數.

size_t size()

二進位制位的個數

flip()

把所有二進位制位逐位取反

flip(size_t pos)

把在pos處的二進位制位取反

bool operator(size_type _pos)

獲取在pos處的二進位制位

set()

把所有二進位制位都置為1

set(pos)

把在pos處的二進位制位置為1

reset()

把所有二進位制位都置為0

reset(pos)

把在pos處的二進位制位置為0

test(size_t pos)

在pos處的二進位制位是否為1?

unsigned long to_ulong()

用同樣的二進位制位返回乙個unsigned long值

string to_string()

返回對應的字串.

C 標準庫 bitset 用法整理

std bitset是stl的一部分,準確地說,std bitset是乙個模板類,它的模板引數不是型別,而整形的數值 這一特性是iso c 2003的新特性 有了它我們可以像使用陣列一樣使用位。下面看乙個例子 include std bitset 8 bs 它是乙個模板,傳遞的引數告訴編譯器bs有8...

bitset 用法整理

建構函式 bitsetb b有n位,每位都為0.引數n可以為乙個表示式.如bitset 5 b0 則 b0 為 00000 bitsetb unsigned long u b有n位,並用u賦值 如果u超過n位,則頂端被截除 如 bitset 5 b0 5 則 b0 為 00101 bitsetb s...

bitset用法整理

bitset用法整理 2008 01 17 14 15 建構函式 bitsetb b有n位,每位都為0.引數n可以為乙個表示式.如bitset 5 b0 則 b0 為 00000 bitsetb unsigned long u b有n位,並用u賦值 如果u超過n位,則頂端被截除 如 bitset 5...