第3章 標準庫類型
⒊⒌ 標準庫bitset類型
[以下下標和位元均為 size_t 型(定義在標頭檔 cstddef 中,
unsigned 整型)]
⒈ bitset 是一種類模板,用於儲存位集,並提供測位和置位操作
⒉ 定義和初始化
bitset 在定義時需要以常量運算式的形式提供位元N
初始化時參數提供位元不足則剩餘高階位置為0,位元過多則拋棄多餘高階位
⑴ bitset<N> b;
預設建構函式置各位為0
⑵ bitset<N> b( unsigned
long u );
使用 unsigned
long 值u的二進位形式初始化
⑶ bitset<N> b( string s, size_t pos=0 );
bitset<N> b( string s, size_t pos,
size_t m );
使用 string 對象s或其(下標pos起到結尾或長度為m的)子串初始化
(子)串最右端對應低階(low-order)位,向左依次類推
⒊ 操作
除支援所有內建位元運算符以及==和!=外,還支援以下操作:
⑴ 訪問整個 bitset 對象
① bool any();
返回是否各位不全為0
② bool none();
返回是否各位全為0
③ size_t count();
返回為1的位的個數
④ size_t size();
返回能容納的位元
⑵ 訪問 bitset 對象中的位
(從低階位起,各位編號依次為 0,
1, 2, 3 …)
① 下標操作符[]返回指定位的引用
② bool test(
size_t pos );
返回指定位的值
③ bitset<N>& set( size_t pos,
int val=1 );
設定指定位的值並返回對象的引用
④ bitset<N>& reset( size_t pos );
清零指定位並返回對象的引用
⑤ bitset<N>& flip( size_t pos );
取反特定位並返回對象的引用
也可以b[pos].flip(),返回指定位的引用
⑶ 設定整個 bitset 對象
① bitset<N>& set();
置所有位為1並返回對象的引用
② bitset<N>& reset();
清零所有位並返回對象的引用
③ bitset<N>& flip();
取反所有位並返回對象的引用
⑷ 擷取 bitset 對象的值
① unsigned
long to_ulong();
返回位元模式相同的 unsigned
long 值
若越界則產生運行時異常
② string to_string();
返回字串形式
③ 可使用輸出操作符列印 bitset 對象