在我的项目中,存储和使用包含较少数量的大位掩码是一项常见任务。所以它们可以很好地压缩在内存中。
答案 0 :(得分:6)
有几种可用的压缩比特矢量实现。它们通常具有运行长度编码和/或/ xor / not操作,这些操作适用于压缩格式。
所以好处是:
并且有缺点:
我知道的一些实现(我确信还有其他实现):
Fastbit 实际上是一个使用bitvector索引的数据库。压缩的bitvector类可以直接使用(没有索引)
Lemur bitmapindex Fastbit引入的EWAH编码的另一种实现
Compressed bitvector by koen.vandamme 从未尝试过......但只有两个标题和一个cpp文件。所以不费吹灰之力。
Bitmagic 完整的封装实现了几个压缩的bitvector,包括硬件支持(sse2,...)
希望这会有所帮助,
罗兰
答案 1 :(得分:0)
答案 2 :(得分:0)
如果您正在寻找的是空间优化,那么std :: vector提供了针对空间优化的矢量特化。
http://www.cplusplus.com/reference/stl/vector/
和C ++标准23.2.5
不知道这是否比boost:dynamic_bitset更好,但是如果你还没有调查它,那么值得研究一下。