问题标签 [std-bitset]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 使用c ++ constexpr对N位字进行位反转
我正在研究一个 fft 实现的位反转算法,到目前为止我的实现是
我需要能够反转 N 位字中的位。我当前的实现是功能性的,但我想重写它以便结果可以用作 a constexpr
,函数签名需要是:
或者:
或接近的东西...
我不确定如何开始实施。
如果可能的话,我想避免按位运算,但我并不反对。
谢谢
c++ - 为什么 std::bitset 不带有迭代器?
似乎std::bitset不附带 STL 迭代器。
因此,我不能执行以下操作:
相反,我必须:
如果没有迭代器,我也不能将位集与任何 STL 算法一起使用。
为什么委员会决定从 bitset 中排除迭代器?
c++ - 将 std::bitset 分成两半?
我正在实现 DES 算法,我需要分std::bitset<56> permutationKey
成两半。
我尝试进行类型转换bitset<56>
,bitset<28>
但没有成功。
实现相同目的的其他方法是单独迭代和分配每个位。我想在不使用循环的情况下实现它,必须有另一种方法。
我能够用原始类型做到这一点
我怎么能这样分裂bitset
?
c++ - 如何在 C++ 中实现位数组
我正在尝试编写一个包含位数组(作为成员变量)的 C++ 模板类。位数组的大小在编译时是已知的,所以我真的很希望它是 a std::bitset
,但是我很难编写一个operator[]
函数来设置位。
例如,我希望我的班级开始这样的事情:
吸气剂工作正常。问题是std::bitset::operator[]
setter 函数返回 a std::bitset::reference
(不是 a bool&
),它本身是模板化的。我对模板不太熟悉,但以下尝试失败了:
出现以下错误need 'typename' before 'std::bitset<K>::reference' because 'std::bitset<K>' is a dependent scope
。我尝试了一些谷歌搜索,但无济于事。
std::bitset
适合这项任务的工具吗?如果是这样,我该如何编写setter函数?如果没有,我可以用什么代替?(我仍然希望它实际上存储为位,并且std::vector<bool>
看起来不太正确,因为我希望在编译时严格固定数组大小)。
c++ - 在 C++ 中将 uint8_t 数组转换为位集
有没有一种快速的方法可以将一个 uint8_t 数组转换为一个 bitset。
我试过这个但不起作用
c++ - 从包含十六进制数字的 std::string 或 QString 创建 std::bitset 或 QBitArray
有没有办法在不执行二进制移位操作的情况下std::bitset
从十六进制构造 astd::string
或QString
反之亦然?我知道如何做到这一点,但我想知道是否可以使用 C++ 流或类似的东西来做到这一点。
到目前为止,这是我的代码(试图避免受到版主的抨击):
c++ - bitset 数据是否以相反的顺序存储?
我正在尝试std::bitset
,在得到错误的结果一段时间后,我注意到结果的顺序相反。尝试在cppreference页面上搜索,但找不到任何来源,因此需要确认。这也应该是不同编译器的默认行为吗?
1000011
1100001
c++ - 在位集中随机选择设置位位置的最佳 C++ 方法
我有std::bitset<32> word
并且我想随机选择一些位的索引(0-31),即 1。没有循环和计数器我怎么能做到这一点。有没有std::algorithm
适合的?如果它更容易,我可以将其转换bitset
为字符串或 int 并将其放在字符串或 int 上。
c++ - 更改 std::bitset 中位范围值的最有效方法
我需要一种复杂度低的有效方法来更改 bitset 中一系列位的值:
例如,我需要将 100 到 500 的值设置为 TRUE。
以最低复杂性完成此任务的最快方法是什么?
使用循环肯定是不够的。
c++ - 快速将'0 1 1 0 1'格式的字符串转换为bitset
如何快速将一串由空格分隔的 1 和 0 转换为bitset
?
存在一个构造函数来bitset
从不被空格分隔的字符串初始化 a,一个将 a 初始化bitset
为全零或一,以及一个从整数初始化。在我的脑海中,我可以想到三种方法:
- 从字符串中删除空格并将其传递给构造函数
- 将二进制转换为整数并将其传递给构造函数
- 将所有值初始化为零并根据for循环中的字符串更改每个位的值
位数为 24,每个字符串正好有 24 位,不多也不少。
编辑: 这是我用来测试性能的代码,这是方法一和二的代码。在我的机器上,方法 1 需要 3 毫秒,方法 3 需要 14 毫秒。
编辑 2:我使用-O3 -o -g --std=c++11
的是我的编译器设置。我使用了 gcc和clang。