⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bitstring.h

📁 麻省理工开发的免费遗传算法类库GAlib,很好用
💻 H
📖 第 1 页 / 共 2 页
字号:
inline BitSubString::~BitSubString() {}inline BitPattern::BitPattern(const BitString& p, const BitString& m)    :pattern(p), mask(m) {}inline BitPattern::BitPattern(const BitPattern& b)    :pattern(b.pattern), mask(b.mask) {}inline BitPattern::BitPattern() {}inline BitPattern::~BitPattern() {}// procedural versions of operatorsinline void and(const BitString& x, const BitString& y, BitString& r){  r.rep = and(x.rep, y.rep, r.rep);}inline void or(const BitString& x, const BitString& y, BitString& r){  r.rep = or(x.rep, y.rep, r.rep);}inline void xor(const BitString& x, const BitString& y, BitString& r){  r.rep = xor(x.rep, y.rep, r.rep);}inline void diff(const BitString& x, const BitString& y, BitString& r){  r.rep = diff(x.rep, y.rep, r.rep);}inline void cat(const BitString& x, const BitString& y, BitString& r){  r.rep = cat(x.rep, y.rep, r.rep);}inline void cat(const BitString& x, unsigned int y, BitString& r){  r.rep = cat(x.rep, y, r.rep);}inline void rshift(const BitString& x, int y, BitString& r){  r.rep = lshift(x.rep, -y, r.rep);}inline void lshift(const BitString& x, int y, BitString& r){  r.rep = lshift(x.rep, y, r.rep);}inline void complement(const BitString& x, BitString& r){  r.rep = cmpl(x.rep, r.rep);}// operatorsinline BitString& BitString::operator &= (const BitString& y){  and(*this, y, *this);  return *this;}inline BitString& BitString::operator |= (const BitString& y){  or(*this, y, *this);  return *this;}inline BitString& BitString::operator ^= (const BitString& y){  xor(*this, y, *this);  return *this;}inline BitString& BitString::operator <<= (int y){  lshift(*this, y, *this);  return *this;}inline BitString& BitString::operator >>= (int y){  rshift(*this, y, *this);  return *this;}inline BitString& BitString::operator -= (const BitString& y){  diff(*this, y, *this);  return *this;}inline BitString& BitString::operator += (const BitString& y){  cat(*this, y, *this);  return *this;}inline BitString& BitString::operator += (unsigned int y){  cat(*this, y, *this);  return *this;}inline void BitString::complement(){  ::complement(*this, *this);}#if defined(__GNUG__) && !defined(_G_NO_NRV)inline BitString  operator & (const BitString& x, const BitString& y) return r{  and(x, y, r);}inline BitString  operator | (const BitString& x, const BitString& y) return r{  or(x, y, r);}inline BitString  operator ^ (const BitString& x, const BitString& y) return r{  xor(x, y, r);}inline BitString  operator << (const BitString& x, int y) return r{  lshift(x, y, r);}inline BitString  operator >> (const BitString& x, int y) return r{  rshift(x, y, r);}inline BitString  operator - (const BitString& x, const BitString& y) return r{  diff(x, y, r);}inline BitString  operator + (const BitString& x, const BitString& y) return r{  cat(x, y, r);}inline BitString  operator + (const BitString& x, unsigned int y) return r{  cat(x, y, r);}inline BitString  operator ~ (const BitString& x) return r{  complement(x, r);}#else /* NO_NRV */inline BitString  operator & (const BitString& x, const BitString& y) {  BitString r; and(x, y, r); return r;}inline BitString  operator | (const BitString& x, const BitString& y) {  BitString r; or(x, y, r); return r;}inline BitString  operator ^ (const BitString& x, const BitString& y) {  BitString r; xor(x, y, r); return r;}inline BitString  operator << (const BitString& x, int y) {  BitString r; lshift(x, y, r); return r;}inline BitString  operator >> (const BitString& x, int y) {  BitString r; rshift(x, y, r); return r;}inline BitString  operator - (const BitString& x, const BitString& y) {  BitString r; diff(x, y, r); return r;}inline BitString  operator + (const BitString& x, const BitString& y) {  BitString r; cat(x, y, r); return r;}inline BitString  operator + (const BitString& x, unsigned int y) {  BitString r; cat(x, y, r); return r;}inline BitString  operator ~ (const BitString& x) {  BitString r; complement(x, r); return r;}#endif// status, matchinginline int BitString::length() const{   return rep->len;}inline int BitString::empty() const{   return rep->len == 0;}inline int BitString::index(const BitString& y, int startpos) const{     return search(startpos, rep->len, y.rep->s, 0, y.rep->len);}inline int BitString::index(const BitSubString& y, int startpos) const{     return search(startpos, rep->len, y.S.rep->s, y.pos, y.pos+y.len);}inline int BitString::contains(const BitString& y) const{     return search(0, rep->len, y.rep->s, 0, y.rep->len) >= 0;}inline int BitString::contains(const BitSubString& y) const{     return search(0, rep->len, y.S.rep->s, y.pos, y.pos+y.len) >= 0;}inline int BitString::contains(const BitString& y, int p) const{  return match(p, rep->len, 0, y.rep->s, 0, y.rep->len);}inline int BitString::matches(const BitString& y, int p) const{  return match(p, rep->len, 1, y.rep->s, 0, y.rep->len);}inline int BitString::contains(const BitSubString& y, int p) const{  return match(p, rep->len, 0, y.S.rep->s, y.pos, y.pos+y.len);}inline int BitString::matches(const BitSubString& y, int p) const{  return match(p, rep->len, 1, y.S.rep->s, y.pos, y.pos+y.len);}inline int BitString::contains(const BitPattern& r) const{  return r.search(rep->s, 0, rep->len) >= 0;}inline int BitString::contains(const BitPattern& r, int p) const{  return r.match(rep->s, p, rep->len, 0);}inline int BitString::matches(const BitPattern& r, int p) const{  return r.match(rep->s, p, rep->len, 1);}inline int BitString::index(const BitPattern& r, int startpos) const{  return r.search(rep->s, startpos, rep->len);}inline  int BitSubString::length() const{   return len;}inline  int BitSubString::empty() const{   return len == 0;}inline int operator != (const BitString& x, const BitString& y){  return !(x == y);}inline int operator>(const BitString& x, const BitString& y){  return y < x;}inline int operator>=(const BitString& x, const BitString& y){  return y <= x;}inline int BitString::first(unsigned int b) const{  return next(-1, b);}inline int BitString::last(unsigned int b) const{  return prev(rep->len, b);}inline int BitString::index(unsigned int bit, int startpos) const{  if (startpos >= 0)    return next(startpos - 1, bit);  else    return prev(rep->len + startpos + 1, bit);}inline void BitString::right_trim(unsigned int b) {  int nb = (b == 0)? 1 : 0;  rep = BStr_resize(rep, prev(rep->len, nb) + 1);}inline void BitString::left_trim(unsigned int b){  int nb = (b == 0)? 1 : 0;  int p = next(-1, nb);  rep = BStr_alloc(rep, rep->s, p, rep->len, rep->len - p);}inline int BitString::test(int i) const{  return ((unsigned)(i) >= rep->len)? 0 :          ((rep->s[BitStr_index(i)] & (1 << (BitStr_pos(i)))) != 0);}// subscriptinginline BitStrBit::BitStrBit(const BitStrBit& b) :src(b.src), pos(b.pos) {}inline BitStrBit::BitStrBit(BitString& v, int p) :src(v), pos(p) {}inline BitStrBit::~BitStrBit() {}inline BitStrBit::operator unsigned int() const{  return src.test(pos);}inline int BitStrBit::operator = (unsigned int b){  src.assign(pos, b); return b;}inline BitStrBit BitString::operator [] (int i){  if ((unsigned)(i) >= rep->len) error("illegal bit index");  return BitStrBit(*this, i);}inline BitSubString BitString::_substr(int first, int l){  if (first < 0 || l <= 0 || (unsigned)(first + l) > rep->len)    return BitSubString(_nil_BitString, 0, 0) ;  else     return BitSubString(*this, first, l);}#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -