我正在尝试初始化 std::bitset<256>
在编译时使用它的一些索引,假设 50-75 和 200-225 设置为 1。
基于 http://en.cppreference.com/w/cpp/utility/bitset/bitset 看起来我的 2 个选项是:
constexpr bitset();
constexpr bitset( unsigned long long val );
考虑到第二个构造函数不适用于大索引,有人可以阐明我将如何初始化我的位集吗?
最佳答案
Bitset constructor constexpr bitset( unsigned long long val )
是有限的,因为它不能从位置 64 向上预设位(因为 unsigned long 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*
类型的初始化器,即类型 (3) 或 (4) 的位集构造函数。
当然,对于长度为 256 的位集,初始化字符串会变长:
std::bitset<256> myBitset("111100000011111000001110000010101000100000100010010000100000000001111");
// I did not count the digits...
关于c++ - 在编译时初始化 c++ std::bitset,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41753330/