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
Libérer: 2025-01-21 03:42:10
original
710 Les gens l'ont consulté

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>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal