3

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

我基本上要代表下表

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 中表示此数据,该数据结构接受多因子键并产生一个值?

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

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

4

1 回答 1

8

试试Boost Multi-Index

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

于 2013-01-10T02:21:44.427 回答