如何在数字大于类型 size_t 的最大数量时使用 std::bitset
How can I use std::bitset while the number is larger than the max number of type size_t
我声明了一个std::set,如下所示:
std::bitset<2 ^ 160> _bitset;
我可以将集合用作
_bitset[10] = 1;
但是如果我想将索引 (1 <<128( 设置为 1
_bitset[(1 << 128)] = 1;
我收到了警告:
警告:左移计数>= 类型 [-Wshift 计数-溢出] 的宽度_bitset[(1 <<128(] = 1;
我知道错误是因为(1<<128(,它太大了。
但是我怎么能像这样使用这个数字呢?
但是我怎么能像这样使用这个数字呢?
不可以,您不能使用与1 << 128
一样大的数字作为std::bitset
的索引。 std::bitset
是以 std::size_t
作为参数的模板。虽然std::size_t
的最大值是实现定义的,但它远小于1 << 128
。
请注意,2 ^ 160
是 162,因为^
是xor
操作。所以_bitset
只有 162 位。
由于从零开始的索引,您可以升级到索引161
。
1 << 128
远不止于此。
如果你想要一个容纳 160 位的位集(因此可以表示 2^160 个不同的状态(,你应该使用 std::bitset<160> _bitset;
.
要设置第 128 位,您只需执行_bitset[127] = 1
.
如果你确实想要一个具有 2^160 位的位集(理论上可以容纳 2^(2^160( 个不同的状态(:这不适合你的电脑,它甚至不适合地球大小的计算机。
相关文章:
- 找到不大于 A 的最大数的最有效方法,该数可被 B 整除
- C++:最大数组值函数工作不正常
- 在浮点数32中保存浮点数16最大数
- 使用 DP 的非相邻元素的最大数组总和
- 如何在数字大于类型 size_t 的最大数量时使用 std::bitset
- 改变std :: bitset中一系列位值的最有效方法
- 找到第 n 个最大数无限循环C++
- 最大数组大小
- C 最大数组大小
- 如何在GPU内存中获取最大数组大小
- 具有最大数组函数的程序
- 这是在包含非唯一元素的未排序数组中选择第k个最大数的最快算法
- 如何递归地找到最大数组元素的索引
- 递归最大数求和
- 如何找到数组中的最大数并用c++显示
- 给定一系列整数,提供第k个最大数
- 在任意加长的集合中查找最大数不起作用
- IEEE 754浮点数,1<的最大数是多少?
- 不与V互质的最大数
- C++是否有最大数组长度限制