Maison >développement back-end >C++ >Comment puis-je récupérer plusieurs clés associées à une valeur unique dans un dictionnaire générique ?

Comment puis-je récupérer plusieurs clés associées à une valeur unique dans un dictionnaire générique ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2025-01-21 03:42:10752parcourir

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

Récupérer plusieurs clés pour une valeur donnée à partir d'un dictionnaire générique

Récupérer une valeur basée sur une clé donnée à partir d'un dictionnaire générique .NET est très simple en utilisant la syntaxe de l'indexeur. Cependant, comme il peut y avoir plusieurs clés ayant la même valeur, récupérer la clé correspondant à une valeur spécifiée peut s'avérer plus difficile.

Introduction à la structure des données BiDictionary

Pour résoudre ce problème, la structure de données BiDictionary a été développée, permettant un mappage bidirectionnel entre les clés et les valeurs. Il maintient deux dictionnaires internes :

  • firstToSecond : une liste qui mappe les clés de premier type aux valeurs de deuxième type.
  • secondToFirst : une liste qui mappe les valeurs du deuxième type aux clés du premier type.

Détails de mise en œuvre

La classe BiDictionary fournit des méthodes pour ajouter des paires clé-valeur et récupérer des valeurs basées sur l'un ou l'autre type de clé. Par exemple :

<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>

Cette implémentation utilise une liste vide comme valeur de retour par défaut pour les clés inexistantes, garantissant que vous recevez toujours une liste, même si elle est vide.

Indexeur personnalisable

Pour plus de commodité, BiDictionary comprend des indexeurs personnalisables qui fournissent un accès direct au dictionnaire interne en fonction du type de clé appelante. Cela simplifie l'accès aux valeurs en vous permettant d'utiliser la syntaxe de l'indexeur :

<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>

Exemple d'utilisation

Le code fourni démontre la fonctionnalité de 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>

Cet exemple montre comment récupérer la clé correspondant à une valeur donnée, et il gère gracieusement le cas de valeurs inexistantes en renvoyant une liste vide.

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