Erstellen einer Map
Teil des Abschnitts Logik & Ablauf der C++-Journey von Coddy — Lektion 24 von 56.
Nachdem Sie nun verstanden haben, was eine Map ist, lernen wir, wie man eine erstellt und ihr Schlüssel-Wert-Paare hinzufügt. Bei der Deklaration einer std::map müssen Sie 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 deren Testergebnisse als Werte speichert:
std::map<std::string, int> studentScores;Um Elemente zu Ihrer Map hinzuzufügen, können Sie die eckige Klammerschreibweise mit dem Schlüssel verwenden und dann einen Wert zuweisen:
studentScores["Alice"] = 95;
studentScores["Bob"] = 87;
studentScores["Carol"] = 92;Dies erstellt drei Schlüssel-Wert-Paare in der Map. Der Name jedes Schülers dient als Schlüssel, mit dem Sie die entsprechende Punktzahl schnell abrufen können.
Um über alle Elemente in einer Map zu iterieren, können Sie eine bereichsbasierte for-Schleife mit auto verwenden. Jedes Element in einer std::map ist ein Schlüssel-Wert-Paar, und Sie können 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 (ein Schlüssel-Wert-Paar) ab, pair.first liefert Ihnen den Schlüssel (den Namen des Studenten), und pair.second liefert Ihnen den Wert (die Punktzahl). Beachten Sie, dass std::map seine Elemente automatisch nach dem Schlüssel sortiert hält, sodass das Iterieren über die Map die Einträge in alphabetischer Reihenfolge ausgibt.
Aufgabe
EinfachErstellen Sie ein Programm, das ein System zur Verfolgung von Schülernoten unter Verwendung einer std::map aufbaut. Ihr Programm wird Schülernamen als Schlüssel und deren Testergebnisse als Werte speichern.
Die folgenden Eingaben werden bereitgestellt:
- Ein Integer
n, der die Anzahl der Schüler darstellt - Anschließend
nPaare von Eingaben:- Ein String, der den Namen des Schülers darstellt
- Ein Integer, der die Punktzahl des Schülers darstellt
Ihr Programm sollte:
- Erstellen Sie eine
std::map<std::string, int>namensgrades - Lesen Sie die Anzahl der Schüler ein
- Lesen Sie für jeden Schüler den Namen und die Punktzahl ein und fügen Sie diese dann unter Verwendung der eckigen Klammern zur Map hinzu
- Geben Sie nach dem Hinzufügen aller Schüler die Informationen jedes Schülers in dem unten gezeigten Format aus
- Berechnen und geben Sie die Gesamtzahl der in der Map gespeicherten Schüler aus
Verwenden Sie 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 Iterieren durch die Map erscheinen (was alphabetische Reihenfolge sein wird, da Maps automatisch nach Schlüsseln sortieren). Verwenden Sie eine Range-based for-Schleife, um durch die Map zu iterieren, auf jedes Schlüssel-Wert-Paar zuzugreifen und den Schülernamen gefolgt von seiner Punktzahl auszugeben.
Probier es selbst
#include <iostream>
#include <map>
#include <string>
using namespace std;
int main() {
// Lies die Anzahl der Schüler ein
int n;
cin >> n;
// Erstelle die Map, um die Noten zu speichern
map<string, int> grades;
// TODO: Schreibe deinen Code hier
// Lies den Namen und die Punktzahl jedes Schülers ein und füge sie der Map hinzu
// Gib die Ergebnisse aus
cout << "Student Grades:" << endl;
// TODO: Verwende eine bereichsbasierte for-Schleife, um die Note jedes Schülers auszugeben
// Gib die Gesamtzahl der Schüler 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