Maison >développement back-end >C++ >Comment récupérer efficacement plusieurs clés associées à la même valeur dans un dictionnaire ?

Comment récupérer efficacement plusieurs clés associées à la même valeur dans un dictionnaire ?

Susan Sarandon
Susan Sarandonoriginal
2025-01-21 03:22:16409parcourir

How to Efficiently Retrieve Multiple Keys Associated with the Same Value in a Dictionary?

Comment récupérer plusieurs clés avec des valeurs spécifiées à partir d'un dictionnaire générique

Les dictionnaires génériques .NET offrent un moyen efficace de récupérer la valeur associée à une clé, comme le montre le code suivant :

<code class="language-csharp">Dictionary<int, string> greek = new Dictionary<int, string>();
greek.Add(1, "Alpha");
greek.Add(2, "Beta");
string secondGreek = greek[2];  // Beta</code>

Cependant, récupérer la clé associée à une valeur donnée n'est pas aussi simple qu'avec un dictionnaire générique, puisqu'un dictionnaire générique ne stocke qu'une seule paire clé-valeur pour chaque clé unique. Cela peut créer des difficultés lorsque vous devez trouver toutes les clés correspondant à une valeur spécifique, en particulier lorsque plusieurs clés peuvent correspondre à la même valeur.

Pour résoudre ce problème, le code suivant implémente un dictionnaire bidirectionnel qui permet de récupérer les clés et les valeurs de manière générique :

<code class="language-csharp">using System;
using System.Collections.Generic;
using System.Text;

class BiDictionary<TFirst, TSecond>
{
    IDictionary<TFirst, IList<TSecond>> firstToSecond = new Dictionary<TFirst, IList<TSecond>>();
    IDictionary<TSecond, IList<TFirst>> secondToFirst = new Dictionary<TSecond, IList<TFirst>>();

    // ... (方法和属性的实现) ...
}</code>

Ce dictionnaire bidirectionnel gère deux ensembles de mappages clé-valeur : l'un est une liste de la première clé à la deuxième valeur, et l'autre est une liste de la deuxième valeur à la première clé. Cela permet une récupération bidirectionnelle efficace des clés et des valeurs.

Par exemple, considérons un dictionnaire de mots grecs, dans lequel chaque lettre grecque se voit attribuer une valeur numérique. À l'aide d'un dictionnaire bidirectionnel, vous pouvez facilement obtenir la lettre grecque correspondant à une valeur numérique donnée comme ceci :

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

// 检索对应于值“Beta”的希腊字母
IList<int> betaKeys = greek.GetBySecond("Beta");

// 显示结果
Console.WriteLine("Keys for \"Beta\":");
foreach (int key in betaKeys)
{
    Console.WriteLine(key);
}</code>

Cette méthode gère les valeurs en double avec élégance en renvoyant une liste de clés correspondant à la valeur spécifiée. Cela démontre la polyvalence des dictionnaires bidirectionnels lorsqu'il s'agit de dictionnaires dans lesquels plusieurs clés peuvent correspondre à la même valeur.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn