【C++】 C++标准模板库(九) Bitsets
1. C++ Bitsets
C++ Bitsets給程序員提供一種位集合的數(shù)據(jù)結(jié)構(gòu)。Bitsets使用許多二元操作符,比如邏輯和,或等。
| Constructors | 創(chuàng)建新bitsets |
| Operators | 比較和賦值bitsets |
| any() | 如果有任何一個位被設(shè)置就返回true |
| count() | 返回被設(shè)置的位的個數(shù) |
| flip() | 反轉(zhuǎn)bits中的位 |
| none() | 如果沒有位被設(shè)置則返回true |
| reset() | 清空所有位 |
| set() | 設(shè)置位 |
| size() | 返回可以容納的位的個數(shù) |
| test() | 返回指定位的狀態(tài) |
| to_string() | 返回bitset的字符串表示 |
| to_ulong() | 返回bitset的整數(shù)表示 |
2. C++ Bitsets
Constructors
語法:| bitset();bitset( unsigned long val ); |
C++ Bitsets能以無參的形式創(chuàng)建,或者提供一個長無符號整數(shù),它將被轉(zhuǎn)化為二進制,然后插入到bitset中。當(dāng)創(chuàng)建bitset時,模板中提供的數(shù)字決定bitset有多長。
例如,以下代碼創(chuàng)建兩個bitsets,然后顯示它們:
// 創(chuàng)建一個8位長的bitsetbitset<8> bs;// 顯示這個bitsetfor( int i = (int) bs.size(); i >= 0; i-- ) {cout << bs[i] << " ";}cout << endl;// 創(chuàng)建另一個bitsetbitset<8> bs2( (long) 131 );// 顯示for( int i = (int) bs2.size(); i >= 0; i-- ) {cout << bs2[i] << " ";}cout << endl;Operators
語法:| !=, ==, &=, ^=, |=, ~, <<=, >>=, [] |
這些操作符都可以和bitsets一起工作。它們被這樣定義:
- != 返回真如果兩個bitset不相等。
- == 返回真如果兩個bitset相等。
- &= 完成兩個bitset間的與運算。
- ^= 完成兩個bitset間的異或運算。
- |= 完成兩個
- ~ 反置bitset (和調(diào)用 flip()類似)
- <<= 把bitset向左移動
- >>= 把bitset向右移動
- [x] 返回第x個位的引用
例如,以下代碼創(chuàng)建一個bitset,然后向左移動4個位:
// 創(chuàng)建一個bitsetbitset<8> bs2( (long) 131 );cout << "bs2 is " << bs2 << endl;// 向左移動4位bs2 <<= 4;cout << "now bs2 is " << bs2 << endl;當(dāng)上述代碼運行時,顯示:
bs2 is 10000011now bs2 is 00110000any
語法:| bool any(); |
any()函數(shù)返回真如果有位被設(shè)置為1,否則返回假。
count
語法:| size_type count(); |
count()函數(shù)bitset中被設(shè)置成1的位的個數(shù)。
flip
語法:| bitset&flip();bitset&flip( size_t pos ); |
flip()函數(shù)反置bitset中所有的位,即將1設(shè)為0,0設(shè)為1。如果指定pos,那么只有pos上的位被反置。
相關(guān)主題:~ operator
none
語法:| bool none(); |
none()返回真如果沒有位被設(shè)為1,否則返回假。
reset
語法:| bitset&reset();bitset&reset( size_t pos ); |
reset()重置bitset(全部設(shè)為0),如果指定pos,那么只有pos上的位被重置。
set
語法:| bitset&set();bitset&set( size_t pos, int val=1 ); |
set()函數(shù)設(shè)置bitset上所有的位,然后返回bitset。如果指定pos,那么只有pos上的位被設(shè)置。
size
語法:| size_t size(); |
size()返回bitset能容納的位。
test
語法:| bool test( size_t pos ); |
test()函數(shù)返回在pos上的位的值。
to_string
語法:| string to_string(); |
to_string()函數(shù)返回bitset的字符串形式。
to_ulong
語法:| unsigned long to_ulong(); |
to_ulong()返回bitset的無符號長整數(shù)形式。
總結(jié)
以上是生活随笔為你收集整理的【C++】 C++标准模板库(九) Bitsets的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【C++】 C++标准模板库(八) Mu
- 下一篇: 【C++】 C++标准模板库(十) 双向