C++ 很好的位集或位数组库

C++ 很好的位集或位数组库,c++,bitset,C++,Bitset,大家好, 我正在寻找一些好的库,它可以用于位集或位数组。有人知道比boost::dynamic_位集更好(或不是更糟)的东西吗?不管这个库是开源的还是商业的 在我的项目中,存储和使用包含较少掩码的大位掩码是一项常见任务。这样就可以在内存中很好地压缩它们。miniat库如何 我记得这是一个简单的位数组实现。如果您只需要空间优化,那么std::vector提供了一个针对空间优化的向量专门化 和C++标准23.2.5/P> 不知道这是否比boost:dynamic_位集更好,但如果您还没有研究过它

大家好, 我正在寻找一些好的库,它可以用于位集或位数组。有人知道比boost::dynamic_位集更好(或不是更糟)的东西吗?不管这个库是开源的还是商业的


在我的项目中,存储和使用包含较少掩码的大位掩码是一项常见任务。这样就可以在内存中很好地压缩它们。

miniat库如何


我记得这是一个简单的位数组实现。

如果您只需要空间优化,那么std::vector提供了一个针对空间优化的向量专门化

和C++标准23.2.5/P>


不知道这是否比boost:dynamic_位集更好,但如果您还没有研究过它,那么值得研究一下

有几种压缩位向量的实现。它们通常具有运行长度编码以及在压缩表单上工作的and/or/xor/not操作

因此,好处是:

  • 较小的空间使用率(对于稀疏位集,如在您的用例中)
  • 非常快的位操作(因为它们处理字,并且对cpu缓存友好得多)
不利的一面是:

  • 位访问速度较慢(需要迭代才能在特定位置找到位)
我知道的一些实现(我确信还有其他实现):

实际上是一个使用位向量索引的数据库。压缩的位向量类可以直接使用(无需索引)

Fastbit引入的EWAH编码的另一个实现

从未尝试过…但只有两个标题和一个cpp文件。所以没有太多的努力去尝试

实现多个压缩位向量的完整包,包括硬件支持(sse2,…)


希望这有帮助


罗兰

你能告诉我们boost的位集实现有什么问题吗?这会有帮助。或者甚至是
std::bitset
有什么问题。或者更确切地说,你需要什么功能而没有提供。+1我对此也很感兴趣。当使用
std::bitset
boost::dynamic_bitset
时,将多个小位集连接成一个大位集的速度非常慢。另一个缺点是,两者都以bigendian形式存储数据,但其toString()返回的字符串很少以bigendian形式存储。。。这并不能使事情变得更容易,当你不得不看,如果每一点都在它的位置