C++简单版BitSet求解大量数据是否存在莫个数
Posted claireyuancy
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++简单版BitSet求解大量数据是否存在莫个数相关的知识,希望对你有一定的参考价值。
#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求解大量数据是否存在莫个数的主要内容,如果未能解决你的问题,请参考以下文章
[POJ2443]Set Operation(bitset)
Gym - 100962F: Frank Sinatra (树上莫队+bitset)