数据结构表示具有"多组合"键的查找表

Kin*_*Jnr 3 c++ oop

您将如何设计用于查找的表数据结构?

我基本上必须代表下表

Country             Activity        Legal_Age
European            Drink           18
European            Drive           21
American            Drink           21
American            Drive           18
Run Code Online (Sandbox Code Playgroud)

这里我的密钥是(国家/地区和活动),价值是Legal_age.

我想到使用std :: map来解决这个问题(到个别地图),如下所示.

national_Activity_age_map

European            European_Activity_age_map
American            American_Activity_age_map
Run Code Online (Sandbox Code Playgroud)

European_Activity_age_map

Drink           18
Drive           21
Run Code Online (Sandbox Code Playgroud)

American_Activity_age_map

Drink           21
Drive           18
Run Code Online (Sandbox Code Playgroud)

但问题是,随着原始表的列数不断增加,要添加和维护的映射数量不断增加.

假设美国选择为美国公民和非公民分别饮酒.然后我将不得不添加新的映射并修改现有的映射.

是否有一种简单而干净的方式在DataStructure中表示此数据,该数据采用多因子密钥并生成一个值?

有一些类似的问题如下,但没有解决我的具体问题. 您将使用什么数据结构来表示此数据格式?

更新:我不能在工作中使用Boost功能,因为它必须被移植(或类似的东西).是否有我可以使用的C++(gcc 4.1.2)功能.

Jam*_*ock 8

尝试提升多指数.

Boost Multi-index Containers Library提供了一个名为multi_index_container的类模板,它可以构建容器,维护一个或多个具有不同排序和访问语义的索引.索引提供类似于STL容器的接口,使得它们熟悉.在相同的元素集合上进行多索引的概念是从关系数据库术语中借用的,并且允许在多索引关系表的精神中规范复杂的数据结构,其中简单的集合和映射是不够的.