您将如何设计用于查找的表数据结构?
我基本上必须代表下表
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)功能。
答案 0 :(得分:8)
Boost Multi-index Containers Library提供了一个名为multi_index_container的类模板,它可以构建容器,维护一个或多个具有不同排序和访问语义的索引。索引提供类似于STL容器的接口,使用它们很熟悉。对相同元素集合进行多索引的概念借鉴了关系数据库术语,并允许在多索引关系表的精神中规范复杂数据结构,其中简单集合和映射是不够的。