ホームページ > バックエンド開発 > C++ > 汎用ディクショナリ内の単一の値に関連付けられた複数のキーを取得するにはどうすればよいですか?

汎用ディクショナリ内の単一の値に関連付けられた複数のキーを取得するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2025-01-21 03:42:10
オリジナル
710 人が閲覧しました

How Can I Retrieve Multiple Keys Associated with a Single Value in a Generic Dictionary?

汎用辞書から指定された値に対する複数のキーを取得します

.NET 汎用辞書から指定されたキーに基づいて値を取得することは、インデクサー構文を使用することで非常に簡単です。ただし、同じ値を持つキーが複数存在する可能性があるため、指定された値に対応するキーを取得するのはより困難になる可能性があります。

BiDictionary データ構造の概要

この問題を解決するために、キーと値の間の双方向マッピングを可能にする BiDictionary データ構造が開発されました。 2 つの内部辞書を維持します:

  • firstToSecond: 最初のタイプのキーを 2 番目のタイプの値にマップするリスト。
  • secondToFirst: 第 2 タイプの値を第 1 タイプのキーにマップするリスト。

実装の詳細

BiDictionary クラスは、キーと値のペアを追加し、いずれかのキー タイプに基づいて値を取得するメソッドを提供します。例:

<code class="language-csharp">BiDictionary<int, string> greek = new BiDictionary<int, string>();
greek.Add(1, "Alpha");
greek.Add(2, "Beta");
greek.Add(5, "Beta");

IList<int> betaKeys = greek["Beta"]; // 返回 [2, 5]</code>
ログイン後にコピー

この実装では、存在しないキーのデフォルトの戻り値として空のリストを使用し、空であっても常にリストを受け取るようにします。

カスタマイズ可能なインデクサー

便宜上、BiDictionary には、呼び出しキーのタイプに基づいて内部辞書への直接アクセスを提供するカスタマイズ可能なインデクサーが含まれています。これにより、インデクサー構文

を使用できるようになり、値へのアクセスが簡素化されます。
<code class="language-csharp">BiDictionary<int, string> greek = new BiDictionary<int, string>();
greek.Add(1, "Alpha");
greek.Add(2, "Beta");

string secondGreek = greek[2]; // 返回 "Beta"</code>
ログイン後にコピー

使用例

提供されたコードは BiDictionary の機能を示しています:

<code class="language-csharp">BiDictionary<int, string> greek = new BiDictionary<int, string>();
greek.Add(1, "Alpha");
greek.Add(2, "Beta");
greek.Add(5, "Beta");

ShowEntries(greek, "Alpha"); // 打印 "Alpha: [1]"
ShowEntries(greek, "Beta"); // 打印 "Beta: [2, 5]"
ShowEntries(greek, "Gamma"); // 打印 "Gamma: []"</code>
ログイン後にコピー

この例は、指定された値に対応するキーを取得する方法を示しており、空のリストを返すことで値が存在しない場合を適切に処理します。

以上が汎用ディクショナリ内の単一の値に関連付けられた複数のキーを取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート