我需要使用超过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)
std::bitset
应该或多或少任意大小的工作-它不是通常仅限于一个unsigned long的大小(尽管它可以看这样一来,因为有这么建立了基于位在一个unsigned long一个bitset构造函数).
如果这不起作用,vector<bool>
可能对你有用,虽然你应该知道它vector
只是名义上的 - 它实际上不是一个容器(即,不符合正常的容器要求).