核心內容: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; //移位