问题标签 [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.
c++ - 如何减少位串?
我想要一个位串的减量运算符。我目前有一个增量运算符定义如下:
我将如何减少位串?
c++ - 如何用一个 0、两个 0 一直迭代到 n 个 0 的所有位串?
我有一个函数来增加一个位串,如下所示:
我想要一个以与调用增量相同的方式调用的函数,但以不同的方式修改位串。每次调用它时,我都想获得与前一个具有相同数量 0 的下一个位串。
例如,如果位串的长度为 10,则对该函数的前 10 次调用将给出一个具有单个 0 的位串。然后,调用 11 到 20 将返回具有 2 个 0 的位串。我希望这一直持续下去,直到位串全为 0。
我怎么能设置这样的功能?谢谢!
c++ - Boost dynamic_bitset - 将一个整数值放入一个位范围内
我有一个 7 字节/56 位的位集,在构造时将第一位设置为一个:
构建后,我想将一个整数值(比如 2019 年)放入第 4 位到第 15 位。我很好奇 boost 中是否有一种简单的方法可以在没有位运算的情况下做到这一点?基本上,我想将一系列位设置为一个整数值,我知道该整数值足够小以适合这些位。感谢您的任何建议。
c++ - 将巨大的 boost dynamic_bitset 向量写入文件并将其读回的有效方法
我有一个巨大的boost dynamic_bitset向量。我想将 dynamic_bitset 向量写入文件,然后将文件读回 dynamic_bitset 向量。是否将 dynamic_bitset 的内存分配为连续的内存块(以便我可以一次写入整个向量而无需遍历)?
位集向量的大小为数百万。所以我正在寻找一种有效的方法将它们写入文件而不是遍历元素。
我将 dynamic_bitset 转换为字符串,然后将字符串写入文件。稍后从文件中读取字符串并将其转换回 dynamic_bitset。
下面是我使用 Visual Studio 在 C++ 中编写的代码:
但即使是这种将其存储为字符串的方法,也需要很长时间才能写入文件。当我尝试从文件读回字符串时,我得到一个“未处理的访问冲突异常”。有没有更有效的方法来实现相同的?
c++ - 扩展 boost::dynamic_bitset 以添加一些功能
我尝试boost::dynamic_bitset
使用我需要的一些功能来扩展该类,例如在 AND 操作之后计算位等。我还需要访问私有成员(m_num_bits 等),因为我希望能够“覆盖”该set()
方法以确保使用 resize() fct 的 bitset 容量,如果pos
要设置的位大于当前 bitset 容量。如果我使用本机set()
fct 它在这种情况下会出现断言错误(因为set()
在这种情况下该方法不会调整大小)
我对模板不是很有经验,而且几周后我才回到 C++,它有点生疏,也许有人可以帮助我。
我开始这样做:
当然这不是编译,错误是:
有人可以提示如何让它运行吗?还有可能比从 dynamic_bitset 类派生更好的方法还是可以这样做?
任何帮助是极大的赞赏。
c++ - Boost 无序容器的 `std::bitset` 或 `boost::dynamic_bitset<>` 的高效散列
我想知道是否有一些有效的方法来散列std::bitset
或boost::dynamic_bitset<>
Boost 的无序容器?
我目前在对它们进行散列之前先转换std::bitset
或boost::dynamic_bitset<>
转换std::string
,但这似乎会很慢。
有没有更好的办法?
c++ - C ++将dynamic_bitset存储到文件中
基本上我正在使用以下代码将位集编写为二进制文件:
我使用动态bitset和to_block_range的方法变成一个临时向量,然后将块打印到文件中。它有效,但是当我使用中间向量(使用的向量与我的位集大小相同)时,我的内存使用量增加了一倍。如何在不增加内存使用量的情况下将 bitset 打印到文件中?
如果我能以块的形式遍历 bitset,那就太好了,但似乎为了防止其他一些问题,动态 bitset 的作者故意省略了这种功能。我应该使用不同的数据结构吗?如果它有助于上下文,我将在一些布隆过滤器代码中使用位集。
boost - 在 boost::dynamic_bitset 中找到最重要位的有效方法?
有没有一种有效的方法来找到在 a 中设置的最高有效位的索引dynamic_bitset
?
find_first
还是我必须使用(找到第一个最低有效位)遍历所有位find_next
并返回找到的最后一个位?
玩具示例:我的位是(从最高到最低有效)1010
,代表数字10
。我想要的函数返回 index 3
。
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
如果我想明确包含(本地..)文件夹
boost - 如何使用一组 boost::dynamic_bitsets?
我正在尝试使用set
对象dynamic_bitset
,但在运行时出现断言失败:
这是代码:
我想知道为什么插入的dynamic_bitset
对象需要相同的大小。为了operator<
工作,它不能假设较短位集中的最高有效位隐含地用零填充吗?
有什么办法可以让那组dynamic_bitset
s 工作吗?
我也尝试了 anunordered_set
因为它不需要,operator<
但它无法编译,因为dynamic_bitset
没有 ahash_value
并且我不确定如何在不使用其to_ulong
成员函数的情况下编写它,这仅适用于短位集。