Recherche de valeur dans une Map
Fait partie de la section Logique et Flux du Journey C++ de Coddy — leçon 55 sur 56.
Défi
FacileCré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
nreprésentant le nombre de paires clé-valeur à ajouter à la map - Ensuite
npaires d'entrées, chacune composée de :- Une chaîne de caractères
keyreprésentant la clé - Un entier
valuereprésentant la valeur
- Une chaîne de caractères
- Un entier
targetValuereprésentant la valeur à rechercher
Votre programme doit :
- Créer une fonction nommée
findKeysWithValuequi prend unstd::map<std::string, int>et un entier en paramètres - La fonction doit retourner un
std::vector<std::string>contenant toutes les clés qui possèdent la valeur spécifiée - Dans la fonction main, créer une map et la remplir avec les paires clé-valeur d'entrée
- Appeler la fonction
findKeysWithValueavec la map et la valeur cible - 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: 0N'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
1Pointeurs et mémoire
Qu'est-ce qu'un pointeur ?Opérateur d'adresseOpérateur de déréférencementPointeurs nulsPointeurs et tableauxMémoire dynamique avec 'new'Libérer la mémoire avec 'delete'Récapitulatif - Pratique des pointeurs2Vecteurs (Tableaux dynamiques)
Introduction à std::vectorCréer un vecteurAjouter des élémentsAccéder aux élémentsTaille d'un vecteurItérer avec une boucle ForBoucle For basée sur l'intervalleSupprimer des élémentsRécapitulatif - Opérations sur les vecteurs3Projet : Outil de liste de tâches
Présentation du projetAjouter une tâche6Ensembles (Éléments uniques)
Introduction à std::setCréer un Set et ajouter des élémentsVérifier la présence d'élémentsSupprimer des élémentsParcourir un SetRécapitulatif - Nombres uniques9Défis finaux
Filtrage de données de vecteurRecherche de valeur dans une MapPointeur et tableau dynamique