- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我尝试使用我需要的一些功能扩展 boost::dynamic_bitset
类,例如在 AND 操作后计算位等。我还需要访问私有(private)成员(m_num_bits 等)因为我希望能够“覆盖”set()
方法以确保 bitset 具有 resize() fct 的容量,如果要设置的位的 pos
是大于当前的位集容量。如果我使用 native set()
fct 它会在这种情况下通过断言错误(因为 set()
方法在这种情况下不会调整大小)
我对模板不是很有经验,而且几周后我才重新开始使用 C++,它有点生疏,也许有人可以帮助我。
我开始这样做:
template <typename Block, typename Allocator>
class ExtendedBitSet : public boost::dynamic_bitset<Block, Allocator> {
typedef boost::dynamic_bitset<Block, Allocator> super;
public:
void set(std::size_t pos) {
if (pos > super::size())
super::resize(pos);
set(pos);
}
bool get(std::size_t pos) const {
return super::test(pos);
}
};
// ...
ExtendedBitSet<> * bs = new ExtendedBitSet<>(128);
bs->set(33);
// ...
std::wcout << "Bit 48 is " << ((bs->get(48) == true) ? "true" : "false") << std::endl;
// ...
delete bs;
当然这不是编译,错误是:
dynamic_bitset.cpp: In function ‘int main(int, char**)’:
dynamic_bitset.cpp:50: error: wrong number of template arguments (0, should be 2)
dynamic_bitset.cpp:7: error: provided for ‘template<class T, class Allocator> class ExtendedBitSet’
dynamic_bitset.cpp:50: error: invalid type in declaration before ‘=’ token
dynamic_bitset.cpp:50: error: wrong number of template arguments (0, should be 2)
dynamic_bitset.cpp:7: error: provided for ‘template<class T, class Allocator> class ExtendedBitSet’
dynamic_bitset.cpp:51: error: request for member ‘set’ in ‘* bs’, which is of non-class type ‘int’
..
dynamic_bitset.cpp:57: error: request for member ‘get’ in ‘* bs’, which is of non-class type ‘int’
有人可以提示如何让它运行吗?还有比从 dynamic_bitset 类派生更好的方法吗?还是可以这样做?
非常感谢任何帮助。
最佳答案
你的 ExtendedBitSet<>
没有模板类型参数的默认参数,您的代码试图在不明确指定它们的情况下实例化它。尝试使用 ExtendedBitSet<unsigned, std::allocator<unsigned> > bs
相反。
关于c++ - 扩展 boost::dynamic_bitset 以添加一些功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11445647/
我希望生成一个 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
我是一名优秀的程序员,十分优秀!