對於乙個叫做a的bitset:a.size() 返回大小(位數)
a.count() 返回1的個數
a.any() 返回是否有1
a.none() 返回是否沒有1
a.set
() 全都變成1
a.set(p) 將第p+1位變成1
a.set(p, x) 將第p+1位變成x
a.reset() 全都變成0
a.reset(p) 將第p+1位變成0
a.flip() 全都取反
a.flip(p) 將第p+1位取反
a.to_ulong() 返回它轉換為unsigned long的結果,如果超出範圍則報錯
a.to_ullong() 返回它轉換為unsigned
long
long的結果,如果超出範圍則報錯
a.to_string() 返回它轉換為string的結果
bitset<4> a ( string("1001
"));
bitset
<4> b ( string("
0011
"));
cout
<< (a^=b) << endl; //
1010
cout << (a&=b) << endl; //
0010
cout << (a|=b) << endl; //
0011
cout
<< endl << a << endl; //
0011
cout << b << endl << endl; //
0011
cout
<< (a<<=2) << endl; //
1100
cout << (a>>=1) << endl; //
0110
cout
<< endl << a << endl; //
0110
cout << b << endl << endl; //
0011
cout
<< (~b) << endl; //
1100
cout << (b<<1) << endl; //
0110
cout << (b>>1) << endl; //
0001
cout
<< (a==b) << endl; //
false (0110==0011)
cout << (a!=b) << endl; //
true (0110!=0011)
cout
<< (a&b) << endl; //
0010
cout << (a|b) << endl; //
0111
cout << (a^b) << endl; //
0101
bitset用法小結
b.any b中是否存在置為1的二進位制位?b.none b中不存在置為1的二進位制位嗎?b.count b中置為1的二進位制位的個數 b.size b中二進位制位的個數 b pos 訪問b中在pos處的二進位制位 b.test pos b中在pos處的二進位制位是否為1?b.set 把b中所有二進...
bitset用法小結
bitset大概就是類似於bool陣列一樣的東西 但是它的每個位置只佔1bit 特別特別小 bitset的原理大概是將很多數壓成乙個,從而節省空間和時間 暴力出奇蹟 一般來說bitset會讓你的演算法複雜度 32 具體是什麼要看計算機 使用bitset型別需 include bitset型別在定義時...
模板 bitset高精度
代替整型進行位運算,更方便並且可以處理超過最大整形範圍大小的位集合。你可以把bitset看作可以位運算的bool陣列,換言之,bitset的大小是固定的。因此,用bitset做狀態壓縮是很方便的,也可以方便的實現集合的交並補操作。bitset僅過載了相等不等和位運算子,原生不支援四則運算和大小比較,...