C++/STL Bitset

 

最近用的bitset比較多,位運算在存儲狀態、模擬行動、搜索很多方面有着非常巨大的優勢,所以特意轉了一篇bitset的基本用法。

==========================================================

構造函數
bitset<n> b;
 b有n位,每位都爲0.參數n可以爲一個表達式.
如bitset<5> b0;則"b0"爲"00000";
 
bitset<n> b(unsigned long u);
 b有n位,並用u賦值;如果u超過n位,則頂端被截除
如:bitset<5>b0(5);則"b0"爲"00101";
 
bitset<n> b(string s);
 b是string對象s中含有的位串的副本
string bitval ( "10011" );
bitset<5> b0 ( bitval4 );
則"b0"爲"10011";

 
bitset<n> b(s, pos);
 b是s中從位置pos開始位的副本,前面的多餘位自動填充0;
string bitval ("01011010");
bitset<10> b0 ( bitval5, 3 );
則"b0" 爲 "0000011010";
 
bitset<n> b(s, pos, num);
 b是s中從位置pos開始的num個位的副本,如果num<n,則前面的空位自動填充0;
string bitval ("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 ()
返回對應的字符串.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章