模板 bitset高精度

2021-08-15 09:38:53 字數 1253 閱讀 9272

代替整型進行位運算,更方便並且可以處理超過最大整形範圍大小的位集合。

你可以把bitset看作可以位運算的bool陣列,換言之,bitset的大小是固定的。因此,用bitset做狀態壓縮是很方便的,也可以方便的實現集合的交並補操作。

bitset僅過載了相等不等和位運算子,原生不支援四則運算和大小比較,所以很少代替高精度數。

bitsetb(unsigned long long u=0);//用u的低n位初始化b,n是乙個可轉成ull型別的常量表示式,高位補0

bitsetb(string s,int pos,int m=string::npos,char zero='0',char one='1');//用s從pos位開始的m位初始化b,s中只含zero和one

b.size();//b的大小,即n

b.count();//b中1的個數

b[pos];//b中pos位的引用

b.set();//b全賦1

b.reset();//b全賦0

b.flip();//b全反轉

b.to_ull();//b轉成unsigned long long,b.size()>64時出錯

b.to_string(char zero='0',char one='1');//按引數輸出字串

os<>b;//按'0'和'1'讀入b,當下乙個字元不是'0'或'1'或讀到b.size()個數後停止

==、!=、<<、>>、&、|、^//保持它們在整型運算中的含義

其他運算子類似。

typedef bitset<127> bint;

bool operator!=(const bint &a,const bint &b)

bool operator<(const bint &a,const bint &b)

bint& operator*=(bint &a,const bint &b)

bint operator%=(bint ÷nd,const bint &divisor)

return dividend;//res是商

}

bitset已經原生過載了輸入輸出運算子,避免歧義。

istream& getb(istream &is,bint &val)

ostream& putb(ostream &os,const bint &val)

高精度模板

include include include includeusing namespace std define maxn 9999 define maxsize 10 define dlen 4 class bignum bignum const int 將乙個int型別的變數轉化為大數 big...

高精度模板

include include include include include using namespace std const int maxn 1000 struct bign bign operator const char num 過載運算子 bign const char num 支援初...

高精度模板

include include include includeusing namespace std define maxn 9999 define maxsize 10 define dlen 4 class bignum 建構函式 bignum const int 將乙個int型別的變數轉化為大...