问题标签 [boost-dynamic-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 投票
1 回答
357 浏览

c++ - 如何减少位串?

我想要一个位串的减量运算符。我目前有一个增量运算符定义如下:

我将如何减少位串?

0 投票
1 回答
380 浏览

c++ - 如何用一个 0、两个 0 一直迭代到 n 个 0 的所有位串?

我有一个函数来增加一个位串,如下所示:

我想要一个以与调用增量相同的方式调用的函数,但以不同的方式修改位串。每次调用它时,我都想获得与前一个具有相同数量 0 的下一个位串。

例如,如果位串的长度为 10,则对该函数的前 10 次调用将给出一个具有单个 0 的位串。然后,调用 11 到 20 将返回具有 2 个 0 的位串。我希望这一直持续下去,直到位串全为 0。

我怎么能设置这样的功能?谢谢!

0 投票
1 回答
2041 浏览

c++ - Boost dynamic_bitset - 将一个整数值放入一个位范围内

我有一个 7 字节/56 位的位集,在构造时将第一位设置为一个:

构建后,我想将一个整数值(比如 2019 年)放入第 4 位到第 15 位。我很好奇 boost 中是否有一种简单的方法可以在没有位运算的情况下做到这一点?基本上,我想将一系列位设置为一个整数值,我知道该整数值足够小以适合这些位。感谢您的任何建议。

0 投票
1 回答
1283 浏览

c++ - 将巨大的 boost dynamic_bitset 向量写入文件并将其读回的有效方法

我有一个巨大的boost dynamic_bitset向量。我想将 dynamic_bitset 向量写入文件,然后将文件读回 dynamic_bitset 向量。是否将 dynamic_bitset 的内存分配为连续的内存块(以便我可以一次写入整个向量而无需遍历)?

位集向量的大小为数百万。所以我正在寻找一种有效的方法将它们写入文件而不是遍历元素。

我将 dynamic_bitset 转换为字符串,然后将字符串写入文件。稍后从文件中读取字符串并将其转换回 dynamic_bitset。

下面是我使用 Visual Studio 在 C++ 中编写的代码:

但即使是这种将其存储为字符串的方法,也需要很长时间才能写入文件。当我尝试从文件读回字符串时,我得到一个“未处理的访问冲突异常”。有没有更有效的方法来实现相同的?

0 投票
1 回答
863 浏览

c++ - 扩展 boost::dynamic_bitset 以添加一些功能

我尝试boost::dynamic_bitset使用我需要的一些功能来扩展该类,例如在 AND 操作之后计算位等。我还需要访问私有成员(m_num_bits 等),因为我希望能够“覆盖”该set()方法以确保使用 resize() fct 的 bitset 容量,如果pos要设置的位大于当前 bitset 容量。如果我使用本机set()fct 它在这种情况下会出现断言错误(因为set()在这种情况下该方法不会调整大小)

我对模板不是很有经验,而且几周后我才回到 C++,它有点生疏,也许有人可以帮助我。

我开始这样做:

当然这不是编译,错误是:

有人可以提示如何让它运行吗?还有可能比从 dynamic_bitset 类派生更好的方法还是可以这样做?

任何帮助是极大的赞赏。

0 投票
1 回答
1539 浏览

c++ - Boost 无序容器的 `std::bitset` 或 `boost::dynamic_bitset<>` 的高效散列

我想知道是否有一些有效的方法来散列std::bitsetboost::dynamic_bitset<>Boost 的无序容器?

我目前在对它们进行散列之前先转换std::bitsetboost::dynamic_bitset<>转换std::string,但这似乎会很慢。

有没有更好的办法?

0 投票
1 回答
1070 浏览

c++ - C ++将dynamic_bitset存储到文件中

如何将向量<bool> 或位集存储到文件中,但按位存储?

基本上我正在使用以下代码将位集编写为二进制文件:

我使用动态bitset和to_block_range的方法变成一个临时向量,然后将块打印到文件中。它有效,但是当我使用中间向量(使用的向量与我的位集大小相同)时,我的内存使用量增加了一倍。如何在不增加内存使用量的情况下将 bitset 打印到文件中?

如果我能以块的形式遍历 bitset,那就太好了,但似乎为了防止其他一些问题,动态 bitset 的作者故意省略了这种功能。我应该使用不同的数据结构吗?如果它有助于上下文,我将在一些布隆过滤器代码中使用位集。

0 投票
0 回答
989 浏览

boost - 在 boost::dynamic_bitset 中找到最重要位的有效方法?

有没有一种有效的方法来找到在 a 中设置的最高有效位的索引dynamic_bitset

find_first还是我必须使用(找到第一个最低有效位)遍历所有位find_next并返回找到的最后一个位?

玩具示例:我的位是(从最高到最低有效)1010,代表数字10。我想要的函数返回 index 3

0 投票
1 回答
3630 浏览

c++ - “没有这样的文件”包括 Boost dynamic_bitset 的问题

我正在尝试将 Boost 的 Dynamic_bitset 类用于一个项目,并且我(相信我)已经从完整的库中获取了我需要的任何文件子集。现在我正在做一个

#include "boost/dynamic_bitset.hpp"在我的 manager.cpp 文件中,编译时我得到这个:

项目文件夹中的文件层次结构如下:

同样的项目在我大学的 linux 系统上编译得很好(那里有 g++ 4.2.4,但我怀疑这很重要),但在我的 Ubuntu 笔记本电脑上却没有这样做(出现上述错误)。为什么它没有找到该文件,因为它显然存在?

我所有的内容都是这样的:

编译只需使用

g++ -o manager manager.c 或者 g++ -Iboost -o manager manager.c

如果我想明确包含(本地..)文件夹

0 投票
1 回答
2292 浏览

boost - 如何使用一组 boost::dynamic_bitsets?

我正在尝试使用set对象dynamic_bitset,但在运行时出现断言失败:

这是代码:

我想知道为什么插入的dynamic_bitset对象需要相同的大小。为了operator<工作,它不能假设较短位集中的最高有效位隐含地用零填充吗?

有什么办法可以让那组dynamic_bitsets 工作吗?

我也尝试了 anunordered_set因为它不需要,operator<但它无法编译,因为dynamic_bitset没有 ahash_value并且我不确定如何在不使用其to_ulong成员函数的情况下编写它,这仅适用于短位集。