C++ 中的地图的多个键[重复]

问题描述 投票:0回答:3

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

Row - Column1 - Column2 - Column3 Column4

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

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

(注-表格仅供说明,并非确切要求) 我想过使用多重映射,但这并不能解决问题

c++ stl dictionary
3个回答
8
投票

尝试来自 boost 的多索引容器。


1
投票

使用自定义比较器定义类似于

pair
的类,如果第一个成员或第二个成员匹配(但不一定两者都匹配),则指示相等。然后您可以使用该类作为您的键类型。您可能需要为每个永远不会在数据中使用的成员指定一个特定值,以用作构造函数中的默认值,以避免由于剩余数据而仅初始化第一个成员的键偶尔会与第二个成员匹配。


0
投票

您可以使用一个映射从第 1 列映射到该行,使用另一个映射从第 2 列映射到该行。 根据需要重复任意数量的列

© www.soinside.com 2019 - 2024. All rights reserved.