Menu
Coddy logo textTech

Parcourir une Map

Fait partie de la section Logique et Flux du Journey C++ de Coddy. Leçon 28 sur 56.

Maintenant que vous savez comment créer, modifier et supprimer des éléments d’une map, apprenons à parcourir toutes les paires clé-valeur de votre map. La boucle for basée sur une plage offre une manière élégante d’itérer sur chaque élément d’une std::map.

Voici la syntaxe de base pour itérer sur une map :

for (auto pair : myMap) {
    // Accéder à la clé avec pair.first
    // Accéder à la valeur avec pair.second
}

Chaque élément de la boucle est un objet pair qui contient deux membres importants : first contient la clé, et second contient la valeur. Voici un exemple pratique :

std::map<std::string, int> scores;
scores["Alice"] = 95;
scores["Bob"] = 87;
scores["Carol"] = 92;

for (auto pair : scores) {
    std::cout << pair.first << ": " << pair.second << std::endl;
}

Cela affichera le nom de chaque étudiant suivi de sa note. Le mot-clé auto détermine automatiquement le type correct pour chaque paire, rendant votre code plus propre et plus facile à lire.

challenge icon

Défi

Facile

Créez un programme qui gère un système de menu de restaurant à l’aide d’une std::map. Votre programme stockera les plats du menu et leurs prix, puis affichera le menu complet en parcourant toutes les paires clé-valeur.

Les entrées suivantes seront fournies :

  • Un entier n représentant le nombre de plats du menu
  • Puis n paires d’entrées :
    • Une chaîne de caractères représentant le nom du plat
    • Un nombre à virgule flottante représentant le prix du plat

Votre programme doit :

  1. Créer une std::map<std::string, double> nommée menu
  2. Lire le nombre de plats du menu
  3. Pour chaque plat, lire le nom et le prix, puis les ajouter à la map en utilisant la notation entre crochets
  4. Utiliser une boucle for basée sur une plage pour parcourir toute la map et afficher chaque plat avec son prix
  5. Calculer et afficher le nombre total d’éléments dans le menu

Utilisez le format de sortie exact suivant :

Restaurant Menu:
[dish1]: $[price1]
[dish2]: $[price2]
[dish3]: $[price3]
...
Total menu items: [number of items]

Les plats du menu doivent être affichés dans l’ordre dans lequel ils apparaissent lors du parcours de la map (ordre alphabétique selon le nom du plat). Utilisez une boucle for basée sur une plage avec auto pair : menu pour parcourir la map, en accédant à chaque paire clé-valeur avec pair.first pour le nom du plat et pair.second pour le prix. Affichez chaque prix avec exactement 2 décimales en utilisant std::fixed et std::setprecision(2).

Essayez vous-même

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

int main() {
    // Lire le nombre d'articles au menu
    int n;
    cin >> n;
    
    // Créer la map du menu
    map<string, double> menu;
    
    // Lire les articles du menu et les prix
    for (int i = 0; i < n; i++) {
        string dish;
        double price;
        cin >> dish >> price;
        // TODO: Ajouter le plat et le prix à la map du menu
    }
    
    // TODO: Afficher l'en-tête "Restaurant Menu:"
    
    // TODO: Utiliser une boucle for basée sur une plage pour parcourir le menu et afficher chaque article
    // Format: [dish]: $[price] avec 2 décimales
    
    // TODO: Afficher le nombre total d'articles au menu
    
    return 0;
}
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Logique et Flux

Entraînez-vous par vous-même : Compilateur C++ en ligne