ある種のキー(ビット配列)->値(整数)マッピングコンテナにデータを保存したいと思います。Bitarray は、最大 32 バイトまで大きくすることができます (おそらく一定のサイズである可能性があります)。
もちろん、標準の std::multimap である可能性があります。
std::multimap my_map;
しかし、キーの一部 (いくつかの位置で 1 または 0 のビット) も検索する必要があり、残りの部分は気にしません。例えば:
マップに挿入:
- キー b"1010001" の下の値 1、
- キー b"1010001" の下の値 2、
- キー b"1000001" の下の値 3
- キー b"0000001" の下の値 4
次に、値を受け取る必要があります。
- b"0000001" を探すと 1、2、3、4、
- b「1000000」を探すと1、2、3、
- 1、b"1010001" を探すと 2
また、キー値を完全に一致させる機能があると便利です。
ブーストでサポートされている C++ で最も簡単な (しかし効率的な) 方法でそれを達成するにはどうすればよいですか? パフォーマンスに関心があります (最大数百万のキーが存在する可能性があります)。