加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

在编译时初始化c std :: bitset

发布时间:2020-12-16 07:20:25 所属栏目:百科 来源:网络整理
导读:我正在尝试初始化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 ); 考虑到第
我正在尝试初始化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?

解决方法

位集构造函数constexpr bitset(无符号长long val)在某种意义上是有限的,它不能从位置64向上预置位(因为无符号长long是64位值).任何高于64的位都将用0初始化,如下例所示(参见 bitset constructors):

std::bitset<70> bl(ULLONG_MAX); // [0,1,...,1] in C++11

如果你想在构造函数中初始化更高的位,我想你不会使用类型为string或char *的初始化器,即类型为(3)或(4)的bitset构造函数.

当然,对于长度为256的位集,初始化字符串变长:

std::bitset<256> myBitset("111100000022222000001110000010101000100000100010010000100000000001111");
// I did not count the digits...

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读