Über ein Set iterieren
Teil des Abschnitts Logik & Ablauf der C++-Journey von Coddy — Lektion 39 von 56.
Nachdem Sie nun Elemente zu einem Set hinzufügen, prüfen und daraus entfernen können, lernen wir nun, wie man über alle Elemente in einem Set iteriert. Die bereichsbasierte for-Schleife bietet die sauberste Möglichkeit, jedes Element zu besuchen.
So iterieren Sie durch ein Set:
std::set<std::string> fruits = {"banana", "apple", "cherry"};
for (const std::string& fruit : fruits) {
std::cout << fruit << std::endl;
}Das wichtigste Merkmal, das man sich merken sollte, ist, dass Sets automatisch eine sortierte Reihenfolge beibehalten. Wenn Sie das fruits-Set oben durchlaufen, wird die Ausgabe "apple", "banana", "cherry" sein – nicht die Reihenfolge, in der Sie sie eingefügt haben. Diese automatische Sortierung ist einer der Hauptvorteile der Verwendung von std::set.
Diese sortierte Iteration macht Sets perfekt für die Anzeige von Daten in alphabetischer oder numerischer Reihenfolge, ohne dass eine manuelle Sortierung erforderlich ist. Egal, ob Sie mit Zahlen, Strings oder anderen vergleichbaren Typen arbeiten, das Set wird sie immer in ihrer natürlichen sortierten Reihenfolge präsentieren.
Aufgabe
EinfachErstellen Sie ein Programm, das die automatische Sortierfunktion von std::set demonstriert, indem Wörter zu einem Set hinzugefügt werden und diese anschließend durchlaufen werden, um sie in alphabetischer Reihenfolge anzuzeigen. Diese Herausforderung testet Ihr Verständnis von bereichsbasierten for-Schleifen (range-based for loops) mit Sets und wie Sets eine sortierte Reihenfolge beibehalten.
Die folgenden Eingaben werden bereitgestellt:
- Eine Ganzzahl
n, die die Anzahl der Wörter darstellt, die dem Set hinzugefügt werden sollen - Anschließend
nZeichenfolgen, die die in das Set einzufügenden Wörter darstellen
Ihr Programm sollte:
- Ein leeres
std::set<std::string>erstellen - Die Anzahl der hinzuzufügenden Wörter einlesen
- Eine Schleife verwenden, um jedes Wort zu lesen und es mit der Methode
.insert()in das Set einzufügen - Eine bereichsbasierte for-Schleife verwenden, um das Set zu durchlaufen und jedes Wort auszugeben
- Nach der Ausgabe aller Wörter die Gesamtzahl der eindeutigen Wörter im Set anzeigen
Verwenden Sie das folgende exakte Ausgabeformat:
Für jedes Wort im Set (in alphabetischer Reihenfolge):
[word]Zusammenfassung am Ende:
Total unique words: [count]Verwenden Sie eine bereichsbasierte for-Schleife mit der Syntax for (const std::string& word : wordSet), um alle Elemente im Set zu durchlaufen. Das Set wird die Wörter automatisch in alphabetischer Reihenfolge präsentieren, was einen der Hauptvorteile der Verwendung von std::set demonstriert. Denken Sie daran, dass doppelte Wörter in der Eingabe vom Set automatisch ignoriert werden, sodass nur eindeutige Wörter angezeigt werden.
Spickzettel
Verwenden Sie eine bereichsbasierte for-Schleife, um alle Elemente in einem Set zu durchlaufen:
std::set<std::string> fruits = {"banana", "apple", "cherry"};
for (const std::string& fruit : fruits) {
std::cout << fruit << std::endl;
}Sets behalten während der Iteration automatisch eine sortierte Reihenfolge bei. Die Elemente werden in ihrer natürlichen sortierten Reihenfolge angezeigt (alphabetisch bei Strings, numerisch bei Zahlen), nicht in der Reihenfolge des Einfügens.
Probier es selbst
#include <iostream>
#include <set>
#include <string>
using namespace std;
int main() {
// Lies die Anzahl der Wörter
int n;
cin >> n;
// Erstelle ein leeres Set, um Wörter zu speichern
set<string> wordSet;
// TODO: Schreibe deinen Code hier
// Lies n Wörter und füge sie in das Set ein
// Verwende eine bereichsbasierte for-Schleife, um das Set zu durchlaufen und jedes Wort auszugeben
// Gib die Gesamtzahl der eindeutigen Wörter aus
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-Übung2Vektoren (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ügen6Sets (Eindeutige Elemente)
Einführung in std::setSet erstellen & Elemente hinzufügenAuf Elemente prüfenElemente entfernenÜber ein Set iterierenZusammenfassung – Eindeutige Zahlen