ビットのフィルターを使用して非常に大きな検索マスクを保存しようとしています。
両方ともstd::vector<bool>
、std::bitset<n>
ブール表現をビットとして格納します。これは、通常はまたはのサイズである通常のブールとは異なりchar
ますint32_t
。
問題は、これらのデータ構造の両方が1つの巨大なブロックのメモリに要素を格納することです。大きすぎるブロックを要求したことで、オペレーティングシステムが私に腹を立てています。1つstd::deque<bool>
は、その要素をリンクリストのようなものに格納することです。
シフトせずに単一ビットへのポインタを使用することはできないことを私は知っています。リンクリストタイプの構造を使用すると、メモリ節約の目的が無効になります。しかし、の2ギガブロックのように格納しchar[]
、シフトを使用して個々のビットを設定し、次に別の2ギガブロックへのリンクポインタを使用することはできますか?
それで、このタイプの構造がどこかに存在するか、あるいは可能でさえあるかどうか教えてください。