1. 程式人生 > >C++簡單版BitSet求解大量數據是否存在莫個數

C++簡單版BitSet求解大量數據是否存在莫個數

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求解大量數據是否存在莫個數