C ++中地图的多个键

时间:2012-06-18 16:27:55

标签: c++ stl map

我有一个表格,其中的条目是这样的

Row - Column1 - Column2 - Column3 Column4

 1     0X0A      1          2      A
 2     0X0B      2          2      B
 3     0x0C      3          2      C

现在我想使用map,以便我可以使用第1列或第2列作为获取行的键。 我应该用什么样的地图来实现这个目标?

(注 - 表仅供说明而非确切要求) 我想过使用multimap,但这不会解决问题

3 个答案:

答案 0 :(得分:7)

boost尝试多索引容器。

答案 1 :(得分:1)

使用自定义比较器定义类似于pair的类,如果第一个成员或第二个成员匹配,则表示相等,但不一定两者都匹配。然后,您可以将该类用作您的密钥类型。您可能需要为数据中永远不会使用的每个成员使用特定值,以在构造函数中用作默认值,以避免由于剩余数据而仅在第二个成员上偶尔匹配第一个成员的键。

答案 2 :(得分:0)

您可以使用一个地图从第1列映射到该行,而另一个映射从第2列映射到该行。根据需要重复多列