【发布时间】:2013-04-20 15:59:36
【问题描述】:
我想将数据存储在某种键(一些位数组)->值(整数)映射容器中。 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 和 2 如果我寻找 b"1010001"
如果能够精确匹配键值对也很好。
如何在 boost 支持的 C++ 中以最简单(但仍然有效)的方式实现它?我关心性能(可能有数百万个键)。
【问题讨论】:
-
看起来你只关心键中的所有 1 匹配而不是 0??
-
“以最简单的方式”-
vector<pair<key,value>>和蛮力搜索....位数是已知的并且很小(例如您的示例中的 7)或可能很大。 -
这只是一个例子。但是,如果我能得到所有值就足够了,这些值从(searched_key & key)返回超过 0。 Tony D 好的,我会澄清的。
标签: c++ containers multimap