- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 set
的 dynamic_bitset
对象,但我在运行时遇到断言失败:
a.out: boost/dynamic_bitset/dynamic_bitset.hpp:1291:
bool boost::operator<(const boost::dynamic_bitset<Block, Allocator>&,
const boost::dynamic_bitset<Block, Allocator>&)
[with Block = long unsigned int,
Allocator = std::allocator<long unsigned int>]:
Assertion `a.size() == b.size()' failed.
代码如下:
#include <iostream>
#include <set>
#include <boost/dynamic_bitset.hpp>
int main() {
typedef boost::dynamic_bitset<> bitset;
std::set<bitset> myset;
bitset x(2, 0);
bitset y(3, 1);
myset.insert(x);
myset.insert(y);
return 0;
}
我想知道为什么插入的 dynamic_bitset
大小相同对象是必需的。对于 operator<
为了工作,它不能假设较短的位集中的最高有效位隐式地用零填充吗?
有什么办法可以得到那组 dynamic_bitset
要上类吗?
我也试过 unordered_set
因为它不需要 operator<
但它无法编译,因为 dynamic_bitset
没有 hash_value
而且我不确定如何在不使用其 to_ulong
的情况下编写它成员函数,仅适用于短位集。
最佳答案
断言的原因是operator<
的方式已实现:
for (size_type ii = a.num_blocks(); ii > 0; --ii)
只有第一个操作数的 block 计数用于迭代位集。如果第一个 bitset 的大小较大,它将越界访问第二个 bitset。
您可以通过 std::set 定义和使用您自己的比较器,并根据您的需要处理不同大小的位集的比较:
struct my_less {
bool operator()(const boost::dynamic_bitset<>& lhs,
const boost::dynamic_bitset<>& rhs) const
{
//TODO: implement custom comparison for lhs < rhs
return false;
}
};
typedef boost::dynamic_bitset<> bitset;
std::set<bitset,my_less> myset;
myset.insert( bitset(2, 0) );
myset.insert( bitset(3, 1) );
关于boost - 如何使用一组boost::dynamic_bitset?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14074293/
我希望生成一个 boost::dynamic_bitset 散列,以便我可以将值存储在 boost::bimaps 中。我尝试了以下代码,Test code here. #include #incl
我正在尝试使用 set的 dynamic_bitset对象,但我在运行时遇到断言失败: a.out: boost/dynamic_bitset/dynamic_bitset.hpp:1291: bo
我正在尝试使用 set的 dynamic_bitset对象,但我在运行时遇到断言失败: a.out: boost/dynamic_bitset/dynamic_bitset.hpp:1291: bo
我是 boost 的新手。我有一个使用 dynamic_bitset 的程序在 lambda 函数中。在我尝试运行该程序后,我收到了这条消息。即使没有初始化 bitset 的函数也会出现此消息以及处理
是否有一种干净的方法来返回 boost::dynamic_bitset 对象的反向排序? 例如:01001100成为00110010。我能想到的最简单的解决方案是将 bitset 转换为字符串,将字符
是否有一种干净的方法来返回 boost::dynamic_bitset 对象的反向排序? 例如:01001100成为00110010。我能想到的最简单的解决方案是将 bitset 转换为字符串,将字符
我正在尝试使用 boost::dynamic_bitset,如下所示: #include class Bitmap { public: Bitmap(std::size_t size = _si
我有这个功能: void SetCode(dynamic_bitset<> * c) { this->_code = c; this->_size = c->size(); }
我使用 boost::dynamic_bitset 来跟踪多个 tcp 连接。如果已连接,则设置为1,否则设置为0。并且每个连接是一个线程。我是否需要保护位集不受多线程影响?还是没有必要,因为它在创建
我有一个巨大的位集,代表一个 74MB 文件的所有位。我正在使用压缩算法来创建此位集的压缩字符串表示形式。然后我需要将该字符串存储到另一个动态位集中,以便以后可以解压缩。我的问题是,无论我如何尝试从字
我正在使用 C++ boost 的 dynamic_bitset。 我已经分配了一个变量,我只想更改它的值 - 像从构造函数中一样从“unsigned long”重新构造它,但我不想再次分配内存或创建
我很难理解 boost::dynamic_bitset 或 std::vector 在内部做什么。我最终想要做的是组成一个网络框架并通过套接字发送它,但我无法以保持我组装的位顺序的方式转换它们....
跟进 How does one store a vector or a bitset into a file, but bit-wise? 基本上,我使用以下代码将位集编写为二进制文件: boost:
我想以一种不会降低性能的方式连接一个大的位集和一个较小的位集。目前,我的应用程序仅在以下代码中就花费了 20% 的 CPU 时间: boost::dynamic_bitset<> encode(con
Dynamic bitset 我有一个需要填充的用例 boost::dynamic_bitset , from a std::string buffer. 你能建议如何去做吗?所以我需要想出一个函数
如何使用 boost::dynamic_bitset 成员序列化一个类? #include #include #include #include #include class A {
我有一个 boost dynamic_bitset我正在尝试从中提取设置位: boost::dynamic_bitset myBitset(1000); 我的第一个想法是对每个索引做一个简单的“转储”
我有一个 7 字节/56 位位集,在构造时将第一个位设置为一个: boost::dynamic_bitset<> b(56, 1); 构造后,我想将一个整数值(比如 2019)放入第 4 位到第 15
有什么办法可以逆序遍历boost::dynamic_bitset吗?我的意思是我们通常通过 find_first() 找到第一个设置位,然后使用 find_next() 继续。 是否有相应的 find
根据所有初步迹象,boost dynamic_bitset只是标题。 documentation暗示它只是标题: The class dynamic_bitset is defined in the
我是一名优秀的程序员,十分优秀!