Menu
Coddy logo textTech

Créer une Map

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

Maintenant que tu comprends ce qu’est un map, apprenons à en créer un et à y ajouter des paires clé-valeur. Lors de la déclaration d’un std::map, tu dois spécifier à la fois le type de clé et le type de valeur à l’aide de chevrons.

Voici la syntaxe de base pour créer une map :

std::map<KeyType, ValueType> mapName;

Par exemple, pour créer une map qui stocke les noms des étudiants comme clés et leurs résultats aux tests comme valeurs :

std::map<std::string, int> studentScores;

Pour ajouter des éléments à votre map, vous pouvez utiliser la notation entre crochets avec la clé, puis affecter une valeur :

studentScores["Alice"] = 95;
studentScores["Bob"] = 87;
studentScores["Carol"] = 92;

Cela crée trois paires clé-valeur dans la map. Le nom de chaque étudiant sert de clé, ce qui vous permet de récupérer rapidement son score correspondant.

Pour parcourir tous les éléments d'une map, vous pouvez utiliser une boucle for basée sur une plage avec auto. Chaque élément d'une std::map est une paire clé-valeur, et vous pouvez accéder à la clé à l'aide de .first et à la valeur à l'aide de .second :

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

Ici, auto déduit automatiquement le type de chaque élément (une paire clé-valeur), pair.first vous donne la clé (le nom de l'étudiant), et pair.second vous donne la valeur (le score). Notez que std::map conserve automatiquement ses éléments triés par clé ; parcourir la map affichera donc les entrées dans l'ordre alphabétique.

challenge icon

Défi

Facile

Créez un programme qui construit un système de suivi des notes des étudiants à l’aide d’une std::map. Votre programme stockera les noms des étudiants comme clés et leurs notes comme valeurs.

Les entrées suivantes seront fournies :

  • Un entier n représentant le nombre d’étudiants
  • Puis n paires de données :
    • Une chaîne représentant le nom de l’étudiant
    • Un entier représentant la note de l’étudiant

Votre programme doit :

  1. Créer une std::map<std::string, int> nommée grades
  2. Lire le nombre d’étudiants
  3. Pour chaque étudiant, lire son nom et sa note, puis les ajouter à la map en utilisant la notation avec des crochets
  4. Après avoir ajouté tous les étudiants, afficher les informations de chaque étudiant selon le format présenté ci-dessous
  5. Calculer et afficher le nombre total d’étudiants stockés dans la map

Utilisez le format de sortie exact suivant :

Student Grades:\n[student1]: [score1]\n[student2]: [score2]\n[student3]: [score3]\n...\nTotal students: [number of students]

Les étudiants doivent être affichés dans l’ordre dans lequel ils apparaissent lors de l’itération sur la map (il s’agira de l’ordre alphabétique puisque les maps trient automatiquement selon la clé). Utilisez une boucle for basée sur une plage pour parcourir la map, accéder à chaque paire clé-valeur et afficher le nom de l’étudiant suivi de sa note.

Essayez vous-même

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

int main() {
    // Lire le nombre d'étudiants
    int n;
    cin >> n;
    
    // Créer la map pour stocker les notes
    map<string, int> grades;
    
    // TODO: Écrivez votre code ici
    // Lire le nom et le score de chaque étudiant, puis les ajouter à la map
    
    
    // Afficher les résultats
    cout << "Student Grades:" << endl;
    // TODO: Utiliser une boucle for basée sur une plage pour afficher la note de chaque étudiant
    
    
    // Afficher le nombre total d'étudiants
    cout << "Total students: " << grades.size() << endl;
    
    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