Menu
Coddy logo textTech

Recherche de valeur dans une Map

Fait partie de la section Logique et Flux du Journey C++ de Coddy — leçon 55 sur 56.

challenge icon

Défi

Facile

Créez un programme qui implémente un système de recherche inversée pour trouver toutes les clés associées à une valeur spécifique dans une map. Ce défi testera votre capacité à combiner l'itération de map, la comparaison de valeurs et la construction de vecteurs pour effectuer une recherche efficace dans des paires clé-valeur.

Les entrées suivantes seront fournies :

  • Un entier n représentant le nombre de paires clé-valeur à ajouter à la map
  • Ensuite n paires d'entrées, chacune composée de :
    • Une chaîne de caractères key représentant la clé
    • Un entier value représentant la valeur
  • Un entier targetValue représentant la valeur à rechercher

Votre programme doit :

  1. Créer une fonction nommée findKeysWithValue qui prend un std::map<std::string, int> et un entier en paramètres
  2. La fonction doit retourner un std::vector<std::string> contenant toutes les clés qui possèdent la valeur spécifiée
  3. Dans la fonction main, créer une map et la remplir avec les paires clé-valeur d'entrée
  4. Appeler la fonction findKeysWithValue avec la map et la valeur cible
  5. Afficher d'abord le nombre de clés correspondantes, puis afficher chaque clé correspondante sur une ligne séparée

Utilisez le format de sortie exact suivant :

Première ligne - nombre de clés correspondantes :

Keys found: [number_of_matching_keys]

Ensuite, chaque clé correspondante sur des lignes séparées :

[matching_key_1]
[matching_key_2]
...

Si aucune clé ne possède la valeur cible, affichez uniquement :

Keys found: 0

N'oubliez pas que votre fonction findKeysWithValue doit créer un nouveau vecteur vide, parcourir la map à l'aide d'une boucle for basée sur une plage (range-based for loop) et utiliser une instruction if pour vérifier la valeur de chaque paire par rapport à la cible. Lorsqu'une correspondance est trouvée, ajoutez la clé (accessible via pair.first) au vecteur de résultat en utilisant push_back(). La fonction doit retourner le vecteur contenant toutes les clés correspondantes.

Essayez vous-même

#include <iostream>
#include <map>
#include <vector>
#include <string>
using namespace std;

// TODO: Écrivez votre fonction findKeysWithValue ici

int main() {
    // Lire le nombre de paires clé-valeur
    int n;
    cin >> n;
    
    // Créer une map pour stocker les paires clé-valeur
    map<string, int> keyValueMap;
    
    // Lire n paires clé-valeur
    for (int i = 0; i < n; i++) {
        string key;
        int value;
        cin >> key >> value;
        keyValueMap[key] = value;
    }
    
    // Lire la valeur cible à rechercher
    int targetValue;
    cin >> targetValue;
    
    // TODO: Appelez votre fonction findKeysWithValue et stockez le résultat
    
    // TODO: Imprimez les résultats au format requis
    // Imprimez d'abord "Keys found: [count]"
    // Imprimez ensuite chaque clé correspondante sur des lignes séparées
    
    return 0;
}

Toutes les leçons de Logique et Flux