C++ 实现位图
代碼如下:
#include <iostream> #include <vector> using namespace std;class BitMap { public:BitMap(size_t range):_bit(range/32+1){}void set(const size_t num){int idx = num / 32;//idx 數組下標int bitIdx = num % 32;_bit[idx] |= 1 << bitIdx;}bool find(const size_t num){int idx = num / 32;int bitIdx = num % 32;return (_bit[idx] >> bitIdx) & 1;}void reset(const size_t num){int idx = num / 32;int bitIdx = num % 32;_bit[idx] &= ~(1 << bitIdx);}private:vector<int>_bit; };int main() {BitMap m(1000);m.set(233);if (m.find(233)) cout << "yes" << endl;else cout << "no" << endl;m.reset(233);if (m.find(233))cout << "yes" << endl;else cout << "no" << endl;if (m.find(2))cout << "yes" << endl;else cout << "no" << endl;return 0; }測試結果:
總結
- 上一篇: 魔灵召唤普通塔攻略
- 下一篇: C++ 实现布隆过滤器(BloomFil