简单的BitVector

class BitVector { public: explicit BitVector(int size) { __size = size; __memlen = (size>>3) + 1; __table = new unsigned char[__memlen]; } ~BitVector() { if(__table) delete[] __table; } void SetBit(int pos) { __table[pos>>3] |= __mask[pos&7]; } void UnSetBit(int pos) { __table[pos>>3] &= ~__mask[pos&7]; } bool TestBit(int pos) { return (__table[pos>>3] & __mask[pos&7]); } void SetVector() { memset(__table, 1, __memlen); } void UnSetVector() { memset(__table, 0, __memlen); } void PushBack(bool value) { if(__size + 1 >= (__memlen<<3)) { unsigned char* tmp = new unsigned char[__memlen+DefaultVectorSize]; memcpy(tmp, __table, __memlen); __memlen += DefaultVectorSize; delete __table; __table = tmp; } if(value) SetBit(__size + 1); else UnSetBit(__size + 1); __size++; } int GetSize(){ return __size; } void Destroy() { delete[] __table; __table = 0; } void Clear() { __size = 0; } private: unsigned int __memlen; unsigned int __size; static const unsigned char/ __mask[8]; unsigned char* __table; }; const unsigned char BitVector::__mask[8] = { 1, 2, 4, 8, 16, 32, 64, 128 };

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值