建構函式
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 ()
返回對應的字串.
例子
void test_bitset_constructor(){// 建構函式1: bitset<n> bstd::bitset<10> bs1;// 建構函式2: bitset<n> b(unsigned long u)std::bitset<5> bs2(10);// 建構函式3: bitset<n> b(string s)std::bitset<5> bs3("10100");// 建構函式4: 複製構造std::bitset<5> bs4(bs3);// 建構函式5: bitset<n> b(s, pos)std::string str = "10100110";std::bitset<9> bs5(str, 2);// 000100110// 建構函式6: bitset<n> b(s, pos, num);std::bitset<9> bs6(str, 2, 4);// 000001001}void test_bitset_func(){ std::string str = "10100110"; std::bitset<10> bs1; std::bitset<5> bs2(10); std::bitset<5> bs3("10100"); std::bitset<5> bs4(bs3); std::bitset<9> bs5(str, 2); // 000100110 std::bitset<9> bs6(str, 2, 4); // 000001001 // any()是否存在置為1的二進位位 assert(bs1.any() == 0); assert(bs2.any() == 1); // none()是否不存在置為1的二進位位, 即全部為0 assert(bs1.none() == 1); assert(bs2.none() == 0); // size()二進位位的個數 assert(bs5.size() == 9); // count()二進位位為1的個數 assert(bs5.count() == 3); // 訪問其中元素, 低位為下標的低位 assert(bs3[0] == 0); assert(bs3[1] == 0); assert(bs3[2] == 1); assert(bs3[3] == 0); assert(bs3[4] == 1); // ...}