多键数据的数据结构?

时间:2009-06-26 14:40:15

标签: c# data-structures dictionary hashtable

是否存在多键数据的常用数据结构?例如(key1,key2,...,keyN) - >值。我以前使用字典词典(在c#中),然后在此基础上编写我自己的包装器,使语法看起来更好一点。但似乎我仍然需要为每个N字典编写一个包装器,其中N是键的数量,因为我必须在代码中定义嵌套的字典结构。

假设我正在使用c#,是否有一种数据结构可以更好地封装这种用法,并且可以包含任意数量的具有类哈希表的查找性能的键?我不能简单地将所有键组合成一个唯一键,因为我需要能够执行类似

的操作
foreach key2 in data[key1]
    foreach key3 in data[key1][key2]
        foreach key4 in data[key1][key2][key3]

1 个答案:

答案 0 :(得分:2)

不,不是。

在不打破类型安全的情况下,我认为有两种解决方案。

  • 字典词典 - Dictionary<T1, Dictionary<T2, TRes>>
  • 元组字典 - Dictionary<Tuple3<T1, T2, T3>, Res>。请注意 - 与F#不同,您可以编写Map<T1 * T2 * T3, Res> - C#没有内置元组类型 - 您必须将它作为泛型类或结构单独实现。

但是关于你的示例代码,参差不齐的字典(Dictionaries of Dictionaries)是唯一的选择。