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

时间:2013-01-10 02:11:37

标签: c++ oop

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

我基本上必须代表下表

Country             Activity        Legal_Age
European            Drink           18
European            Drive           21
American            Drink           21
American            Drive           18

此处我的密钥是(国家/地区和活动),值为Legal_age。

我想过使用std :: map将这个问题(分解成单个地图)分解如下。

national_Activity_age_map

European            European_Activity_age_map
American            American_Activity_age_map

European_Activity_age_map

Drink           18
Drive           21

American_Activity_age_map

Drink           21
Drive           18

但问题是,随着原始表的列数不断增加,要添加和维护的地图数量不断增加。

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

有一个简单的&一种在DataStructure中表示此数据的简洁方法,它接受一个多因子密钥并产生一个值?

有一些类似的问题如下,但没有解决我的具体问题。 What datastructure would you use to represent this format of data?

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

1 个答案:

答案 0 :(得分:8)

尝试Boost Multi-Index

  

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