C++簡單版BitSet求解大量數據是否存在莫個數
阿新 • • 發佈:2017-07-01
end private ext its append 大量數據 name parent --
#include <iostream>
using namespace std;
template<int N>
class BitSet
{
public:
BitSet()
{
set();
}
void set()
{
for (int i = 0; i < Nm; i++)
{
vtr[i] = 0;
}
}
void set(int n)
{
vtr[(n-1) / 32] |= (0x1 << ((n-1) % 32));
}
void Printf()
{
for (int i = N; i >0; i--)
{
cout<< (((vtr[(i-1)/32]>>((i-1)%32)) & 0x1) == 0 ? "0" : "1");
}
}
bool test(int n)
{
if (vtr[(n-1) / 32] >> ((n-1) % 32) & 0x1)return true ;
return false;
}
private:
enum{ _N_=(N-1) / (sizeof(size_t)*8)};
enum{Nm=_N_+1};
int vtr[Nm];
};
int main()
{
BitSet<344> bt;
bt.set(32);
//如此一個簡單的bitset就完畢了,找出大量數據中是否存在莫個數字。
if (bt.test(32))
{
cout << "該位置存在" << endl;
}
else
{
cout << "該位置不存在" << endl;
}
bt.Printf();
return 0;
}
C++簡單版BitSet求解大量數據是否存在莫個數