bitset超过32位?

Ste*_*Chu 4 c++ stl bitset

我需要使用超过32位的位标志(现在确切地说是33位).我试过,发现std :: bitset不能处理超过32位(ulong).我是否必须使用矢量或有一种方法使bitset工作?

我在这个项目中仅限于c ++ 98,所以我不能使用boost.

谢谢.

编辑:

我想做这样的事情:

const uint64    kBigNumber = 1LL << 33;
std::bitset<33> myBitSet;
...
switch(myBitSet) {
    case kBigNumber:
    // do something
    ...
}
Run Code Online (Sandbox Code Playgroud)

Jer*_*fin 6

std::bitset应该或多或少任意大小的工作-它不是通常仅限于一个unsigned long的大小(尽管它可以看这样一来,因为有这么建立了基于位在一个unsigned long一个bitset构造函数).

如果这不起作用,vector<bool>可能对你有用,虽然你应该知道它vector只是名义上的 - 它实际上不是一个容器(即,不符合正常的容器要求).


and*_*and 5

会对std::vector<bool>你有用吗?它可以调整大小,速度相当快,占地面积小.它也是STL的一部分.