ACM模板 bitset小結

2022-05-15 06:33:09 字數 1624 閱讀 2328

對於乙個叫做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僅過載了相等不等和位運算子,原生不支援四則運算和大小比較,...