STL容器 -- Bitset

核心內容:Bitset 是 STL 中的二進制容器, 存放的時 bit 位元素, 每一位只佔一個 bit 位, 取值 0 或者 1, 能夠像整形元素同樣按位與或非, 而且大大優化了時間和空間複雜度.優化

頭文件: #include <bitset>spa

構造方法:code

1 bitset<length> b  //b爲bitset對象,它能容納length個bit位,每一個元素初值爲0
2 bitset<length> b(unsigned long u)  //b有length位,並用u賦值;若是u超過n位,則頂端被截除
3 bitset<length> b(string s) //以字符串 s 初始化長度爲 length 的 b, s 必須僅包含01
4 bitset<length> b(string s, pos)  // b是 s 中從位置 pos 開始位的副本,前面的多餘位自動填充0
5 bitset<length> b(s, pos, num)  //b是s中從位置pos開始的num個位的副本,若是num<n,則前面的空位自動填充0
6 cin >> b   //若是輸入的不是0或1的字符,只取該字符前面的二進制位.

經常使用操做:對象

b.any( )   //b 中是否存在值爲 1 的二進制位
b.none( )  //b 中是否不存在值爲 1 的二進制位
b.set()   //對 b 中所有元素設置爲 1
b.reset() //對 b 中所有元素設置爲 0
b.set(pos) //即 b[pos] = 1
b.set(pos, value) //即 b[pos] = value
b.reset(pos)   //即 b[pos] = 0
b.to_string()      //返回 b 的 string 表示法
b.to_ulong     //返回 b 的 long 型表示法
b.count()     //返回二進制爲 1 的個數
b.size()    //二進制位的個數
b.flip()   //全部二進制位按位取反
b.flip(pos)  //處於 pos 位置的數取反
b.test(pos)  //在pos處的二進制位是否爲1?

常見運算:blog

b1 = b2 & b3;    //按位與
b1 = b2 | b3;     //按位或
b1 = b2 ^ b3;    //按位異或
b1 = ~b2;          //按位補
b1 = b2 << 7;    //移位
相關文章
相關標籤/搜索