【STL】bitset樣本

來源:互聯網
上載者:User

建構函式
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);    // ...}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.