问题标签 [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.

0 投票
2 回答
639 浏览

c++ - 使用c ++ constexpr对N位字进行位反转

我正在研究一个 fft 实现的位反转算法,到目前为止我的实现是

我需要能够反转 N 位字中的位。我当前的实现是功能性的,但我想重写它以便结果可以用作 a constexpr,函数签名需要是:

或者:

或接近的东西...

我不确定如何开始实施。

如果可能的话,我想避免按位运算,但我并不反对。

谢谢

0 投票
2 回答
11482 浏览

c++ - 为什么 std::bitset 不带有迭代器?

似乎std::bitset不附带 STL 迭代器。
因此,我不能执行以下操作:

相反,我必须:

如果没有迭代器,我也不能将位集与任何 STL 算法一起使用。
为什么委员会决定从 bitset 中排除迭代器?

0 投票
2 回答
2116 浏览

c++ - 将 std::bitset 分成两半?

我正在实现 DES 算法,我需要分std::bitset<56> permutationKey成两半。

我尝试进行类型转换bitset<56>bitset<28>但没有成功。

实现相同目的的其他方法是单独迭代和分配每个位。我想在不使用循环的情况下实现它,必须有另一种方法。

我能够用原始类型做到这一点

我怎么能这样分裂bitset

0 投票
1 回答
1113 浏览

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>看起来不太正确,因为我希望在编译时严格固定数组大小)。

0 投票
1 回答
2529 浏览

c++ - 在 C++ 中将 uint8_t 数组转换为位集

有没有一种快速的方法可以将一个 uint8_t 数组转换为一个 bitset。

我试过这个但不起作用

0 投票
4 回答
1658 浏览

c++ - 从包含十六进制数字的 std::string 或 QString 创建 std::bitset 或 QBitArray

有没有办法在不执行二进制移位操作的情况下std::bitset从十六进制构造 astd::stringQString反之亦然?我知道如何做到这一点,但我想知道是否可以使用 C++ 流或类似的东西来做到这一点。

到目前为止,这是我的代码(试图避免受到版主的抨击):

0 投票
1 回答
774 浏览

c++ - bitset 数据是否以相反的顺序存储?

我正在尝试std::bitset,在得到错误的结果一段时间后,我注意到结果的顺序相反。尝试在cppreference页面上搜索,但找不到任何来源,因此需要确认。这也应该是不同编译器的默认行为吗?

1000011

1100001

0 投票
2 回答
1305 浏览

c++ - 在位集中随机选择设置位位置的最佳 C++ 方法

我有std::bitset<32> word并且我想随机选择一些位的索引(0-31),即 1。没有循环和计数器我怎么能做到这一点。有没有std::algorithm适合的?如果它更容易,我可以将其转换bitset为字符串或 int 并将其放在字符串或 int 上。

0 投票
1 回答
861 浏览

c++ - 更改 std::bitset 中位范围值的最有效方法

我需要一种复杂度低的有效方法来更改 bitset 中一系列位的值:

例如,我需要将 100 到 500 的值设置为 TRUE。

以最低复杂性完成此任务的最快方法是什么?

使用循环肯定是不够的。

0 投票
1 回答
294 浏览

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的是我的编译器设置。我使用了 gccclang。