Erstellen einer Map
Teil des Abschnitts Logik & Ablauf der C++-Journey von Coddy. Lektion 24 von 56.
Nachdem du nun verstanden hast, was eine Map ist, lernen wir, wie man eine erstellt und Schlüssel-Wert-Paare hinzufügt. Beim Deklarieren einer std::map musst du sowohl den Schlüsseltyp als auch den Werttyp mithilfe von spitzen Klammern angeben.
Hier ist die grundlegende Syntax zum Erstellen einer Map:
std::map<KeyType, ValueType> mapName;Zum Beispiel, um eine Map zu erstellen, die Studentennamen als Schlüssel und ihre Testergebnisse als Werte speichert:
std::map<std::string, int> studentScores;Um Elemente zu deiner Map hinzuzufügen, kannst du die Notation mit eckigen Klammern und dem Schlüssel verwenden und anschließend einen Wert zuweisen:
studentScores["Alice"] = 95;
studentScores["Bob"] = 87;
studentScores["Carol"] = 92;Dadurch werden drei Schlüssel-Wert-Paare in der Map erstellt. Der Name jedes Schülers dient als Schlüssel, mit dem du die entsprechende Punktzahl schnell abrufen kannst.
Um über alle Elemente in einer map zu iterieren, kannst du eine for-Schleife auf Basis eines Bereichs mit auto verwenden. Jedes Element in einer std::map ist ein Schlüssel-Wert-Paar, und du kannst auf den Schlüssel mit .first und auf den Wert mit .second zugreifen:
for (const auto& pair : studentScores) {
std::cout << pair.first << ": " << pair.second << std::endl;
}Hier leitet auto automatisch den Typ jedes Elements (eines Schlüssel-Wert-Paares) ab, pair.first gibt dir den Schlüssel (den Namen des Studenten), und pair.second gibt dir den Wert (die Punktzahl). Beachte, dass std::map seine Elemente automatisch nach dem Schlüssel sortiert hält, sodass das Durchlaufen der Map die Einträge in alphabetischer Reihenfolge ausgibt.
Aufgabe
EinfachErstelle ein Programm, das mithilfe einer std::map ein System zur Verfolgung von Schülernoten erstellt. Dein Programm speichert die Namen der Schüler als Schlüssel und ihre Testergebnisse als Werte.
Die folgenden Eingaben werden bereitgestellt:
- Eine Ganzzahl
n, die die Anzahl der Schüler angibt - Dann
nEingabepaare:- Eine Zeichenkette, die den Namen des Schülers darstellt
- Eine Ganzzahl, die die Punktzahl des Schülers darstellt
Dein Programm sollte:
- Eine
std::map<std::string, int>namensgradeserstellen - Die Anzahl der Schüler einlesen
- Für jeden Schüler seinen Namen und seine Punktzahl einlesen und ihn anschließend mithilfe der eckigen Klammernotation zur Map hinzufügen
- Nachdem alle Schüler hinzugefügt wurden, die Informationen zu jedem Schüler im unten gezeigten Format ausgeben
- Die Gesamtzahl der in der Map gespeicherten Schüler berechnen und ausgeben
Verwende das folgende exakte Ausgabeformat:
Student Grades:\n[student1]: [score1]\n[student2]: [score2]\n[student3]: [score3]\n...\nTotal students: [number of students]Die Schüler sollten in der Reihenfolge ausgegeben werden, in der sie beim Durchlaufen der Map erscheinen (also in alphabetischer Reihenfolge, da Maps automatisch nach dem Schlüssel sortieren). Verwende eine bereichsbasierte for-Schleife, um die Map zu durchlaufen, auf jedes Schlüssel-Wert-Paar zuzugreifen und den Namen des Schülers gefolgt von seiner Punktzahl auszugeben.
Probier es selbst
#include <iostream>
#include <map>
#include <string>
using namespace std;
int main() {
// Lies die Anzahl der Studenten
int n;
cin >> n;
// Erstelle die Map zum Speichern der Noten
map<string, int> grades;
// TODO: Schreibe deinen Code hier
// Lies den Namen und die Punktzahl jedes Studenten und füge sie der Map hinzu
// Gib die Ergebnisse aus
cout << "Student Grades:" << endl;
// TODO: Verwende eine range-basierte for-Schleife, um die Note jedes Studenten auszugeben
// Gib die Gesamtanzahl der Studenten aus
cout << "Total students: " << grades.size() << endl;
return 0;
}Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Logik & Ablauf
1Pointer und Speicher
Was ist ein Pointer?AdressoperatorDereferenzierungsoperatorNull-PointerPointer und ArraysDynamischer Speicher mit 'new'Speicher freigeben mit 'delete'Zusammenfassung – Pointer-Übung4Maps (Schlüssel-Wert-Paare)
Einführung in std::mapErstellen einer MapWerte abrufen und ändernAuf Schlüssel prüfenPaare entfernenÜber eine Map iterierenZusammenfassung – Wortfrequenz2Vektoren (Dynamische Arrays)
Einführung in std::vectorEinen Vector erstellenElemente hinzufügenAuf Elemente zugreifenVector-GrößeIterieren mit einer For-SchleifeRange-based For-SchleifeElemente entfernenZusammenfassung – Vector-Operationen3Projekt: Aufgabenlisten-Tool
ProjektübersichtEine Aufgabe hinzufügenÜbe selbstständig: Online-C++-Compiler