3

マルチキーデータに一般的に使用されるデータ構造はありますか? 例: (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]
4

1 に答える 1

2

いいえ、そうではありません。

型安全性を損なうことなく、2つの解決策があると思います。

  • 辞書の辞書-Dictionary<T1, Dictionary<T2, TRes>>
  • タプルの辞書- Dictionary<Tuple3<T1, T2, T3>, Res>。記述できるF#とは異なり、Map<T1 * T2 * T3, Res>C#には組み込みのタプル型がないことに注意してください。これは、ジェネリッククラスまたは構造体として個別に実装する必要があります。

ただし、サンプルコードに関しては、ギザギザの辞書(Dictionaries of Dictionaries)が唯一の選択肢です。

于 2009-06-26T14:48:52.023 に答える