位图

来源:互联网 发布:腾讯视频mac破解版 编辑:程序博客网 时间:2024/06/06 00:29

C++代码实现

#pragma once#include <iostream>#include <vector>using namespace std;class BitMap{public:    BitMap(size_t range)   //给定位图所能表示的 范围    {        _bitmap.resize(range / 32 + 1);  //设置大小    }    void Set(size_t num)  //置 1    {        size_t index = num / 32;        //所在下标        size_t pos = num % 32;          //所在位置        _bitmap[index] |= (1 << pos);       }    void Reset(size_t num)  //置 0     {        size_t index = num / 32;        size_t pos = num % 32;        _bitmap[index] &= (~(1 << pos));    }    bool Test(size_t num)  //返回状态位    {        size_t index = num / 32;        size_t pos = num % 32;        return _bitmap[index] & (1 << pos);    }protected:    vector<size_t> _bitmap;};void TestBitMap(){    BitMap bm(1000);    bm.Set(1);    bm.Reset(1);    bm.Set(2);    bm.Set(3);    bm.Set(12);    cout<<bm.Test(1)<<endl;    cout<<bm.Test(2)<<endl;}
0 0
原创粉丝点击