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)

bitset库

bitset库

Gym - 100962F: Frank Sinatra (树上莫队+bitset)

Gym - 100342J Triatrip (bitset求三元环个数)

luogu P4688 [Ynoi2016]掉进兔子洞