これが以前に尋ねられた場合は、事前にお詫び申し上げます。ある場合、このデータ構造が何と呼ばれるかわかりません。
N 個 (約 300 以下) のウィジェットのコレクションがあります。各ウィジェットには M 個 (約 10 個) の異なる名前があります。このコレクションは 1 回入力され、その後何度も検索されます。これを C++ で実装します。
この例として、200 人のユーザーのコレクションがあり、その名前を 7 つの異なる言語で保存している場合があります。
検索関数は基本的に次のようになります: lookup("name", A, B) は、言語 A から言語 B への名前 "name" の翻訳を返します (name がコレクションにある場合のみ)。
この種のことを効率的に行うための文献に既知のデータ構造はありますか? 最も明白な解決策は、ルックアップ用の一連のハッシュ テーブルを作成することですが、考えられるすべてのペアに対して MxM ハッシュ テーブルを用意すると、すぐに扱いにくくなり、メモリの効率が低下します。また、並べ替えられた配列 (バイナリ検索) やツリーも検討したいと思います。コレクションは巨大ではないため、log(N) ルックアップは問題ありません。
みんなありがとう!