我想将数据存储在某种键(一些位数组)-> 值(整数)映射容器中。Bitarray 最大可以达到 32 字节(并且可能是一个恒定的大小)。
当然,它可以是标准的 std::multimap。
std::multimap my_map;
但我还必须搜索密钥的一部分(几个位置上的 1 或 0 位),而不关心它的其余部分。例如:
插入地图:
- 键 b“1010001”下的值 1,
- 键 b“1010001”下的值 2,
- 键 b“1000001”下的值 3
- 键 b“0000001”下的值 4
然后我应该收到值:
- 1、2、3 和 4 如果我寻找 b"0000001",
- 1、2 和 3 如果我寻找 b"1000000",
- 1和2如果我寻找b“1010001”
拥有精确匹配键值的能力也是一件好事。
如何在 boost 支持的 C++ 中以最简单(但仍然有效)的方式实现它?我关心性能(可能有数百万个键)。