我试图初始化std :: bitset< 256>在编译时使用它的一些索引,假设50-75和200-225设置为1。
基于http://en.cppreference.com/w/cpp/utility/bitset/bitset 看起来我的两个选项是:
constexpr bitset();
constexpr bitset( unsigned long long val );
考虑到第二个构造函数不能用于大型索引,有人可以说明我将如何初始化我的bitset吗?
答案 0 :(得分:1)
Bitset构造函数constexpr bitset( unsigned long long val )
在某种意义上是有限的,因为它无法从位置64向上预设位(因为无符号长long是64位值)。任何高于64的位都将使用0
进行初始化,如下例所示(参见bitset constructors):
std::bitset<70> bl(ULLONG_MAX); // [0,0,0,0,0,0,1,1,1,...,1,1,1] in C++11
如果你想在构造函数中初始化更高的位,我认为你不会使用类型为string
或char*
的初始化器,即类型的bitset构造函数( 3)或(4)。
当然,对于长度为256的位集,初始化字符串变长:
std::bitset<256> myBitset("111100000011111000001110000010101000100000100010010000100000000001111");
// I did not count the digits...
答案 1 :(得分:0)
您可以使用将字符串作为参数的构造函数并以此方式初始化。
例如。以下行将使用b
初始化0000000101111001
:
std::bitset<16> b (std::string("0101111001"));