1.概念
位图(bitset)是一种常用的数据结构,常用在给一个很大范围的数,判断其中的一个数是不是在其中。在索引、数据压缩方面有很大的应用。
位图是用数组实现的,数组的每一个元素的每一个二进制位都表示一个数据,0表示该数据不存在,1表示该数据存在。
2.C++库中bitset的使用
3.bitset的简单实现
当我们存放一个数据时的思路是:
1)确定数据在哪个区间上,即_bitSet的第几个元素上,_bitSet是顺序表,每个元素是char类型,value/8可得到
2)确定数据在哪个区间的哪个bit位上,value%8可以得到
3)找到该位置后,将bit位置1
4)重置的时候,将该bit位置0
#pragma once
#include<vector>
//只能用于整型,节省空间
class BitSet
{
public:
BitSet(size_t range)
{
//当range为8以下的时候,会开辟0个空间,会出错
_bitSet.resize(range/8+1,0);
}
void Set(si