こんにちは、ビットセットまたはビットアレイで動作する優れたライブラリを探しています。boost::dynamic_bitset よりも優れている (またはすべての場合で悪くない) ことを知っている人はいますか? ライブラリがオープン ソースか商用かは関係ありません。
私のプロジェクトでは、1 の数が少ない大きなビット マスクを保存して操作するのが一般的なタスクです。そのため、メモリ内で適切に圧縮できます。
利用可能な圧縮ビットベクトルの実装がいくつかあります。それらは通常、圧縮形式で機能する and/or/xor/not 操作と一緒にランレングス エンコーディングを備えています。
したがって、利点は次のとおりです。
そしてマイナス面:
私が知っているいくつかの実装(私が確信している他の実装があります):
Fastbit 実際には、ビットベクトル インデックスを使用するデータベースです。圧縮された bitvector クラスは (インデックスなしで) 直接使用できます。
Lemur bitmapindex Fastbitによって導入された EWAH エンコーディングの別の実装
koen.vandamme による圧縮ビットベクター 試したことはありませんが、2 つのヘッダーと 1 つの cpp ファイルのみです。そのため、試してみる努力はあまり必要ありません。
ハードウェア サポート (sse2 など) を含む複数の圧縮ビットベクトルを実装するBitmagic本格的なパッケージ
お役に立てれば、
ローランド
スペースの最適化だけを探している場合、std::vector は、スペース用に最適化されたベクトルの特殊化を提供します。
http://www.cplusplus.com/reference/stl/vector/
および C++ 標準 23.2.5
これが boost:dynamic_bitset よりも優れているかどうかはわかりませんが、まだ調べていない場合は調査する価値があります。