Range-basierte for-Schleifen mit Containern
Durchlaufen Sie Container übersichtlich mit der range-basierten for-Syntax aus C++11.
Range-basierte for-Schleifen mit Containern ist eine kostenlose C++ Academy-Lektion auf CoddyKit. Dies ist Lektion 3 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des C++ Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der C++ Academy-Kurs umfasst insgesamt 4 Lektionen.
Die moderne Schleife
C++11 führte die range-basierte for-Schleife ein. Damit können Sie jeden Container ohne explizite Indizes oder Iteratoren durchlaufen. Der Code ist übersichtlicher und weniger fehleranfällig.
std::vector<int> v = {1, 2, 3, 4, 5};
for (int x : v) {
std::cout << x << " ";
}Per Wert
Das obige Beispiel kopiert jedes Element in x. Für kostengünstige Typen wie int ist das in Ordnung, bei großen Objekten jedoch teuer.
Per const-Referenz
Verwenden Sie für nicht-triviale Typen const auto&, um Kopien zu vermeiden und auszudrücken, dass Sie die Elemente nicht ändern werden.
std::vector<std::string> names = {"Ada", "Bob"};
for (const auto& name : names) {
std::cout << name << "\n";
}Per Referenz ändern
Verwenden Sie eine einfache Referenz, um Elemente direkt zu ändern.
std::vector<int> v = {1, 2, 3};
for (auto& x : v) {
x *= 10;
}
// v is now {10, 20, 30}auto zur Typableitung
Lassen Sie den Compiler den Elementtyp ableiten. Bei Zeichenketten, Vektoren aus Strukturen und Maps erspart Ihnen das viel Schreibarbeit.
Eine Map durchlaufen
Jedes Element ist ein std::pair<const Key, Value>. Verwenden Sie strukturierte Bindungen (C++17) für übersichtlicheren Code.
std::map<std::string, int> ages = {{"Ada",30},{"Bob",24}};
for (const auto& [name, age] : ages) {
std::cout << name << ": " << age << "\n";
}Zeichenketten durchlaufen
Ein std::string ist ein Container aus char-Elementen.
std::string s = "hello";
for (char c : s) {
std::cout << c << " ";
}Schleifen über Initialisierungslisten
Sie können mit einer Range-Schleife direkt über eine in geschweiften Klammern eingeschlossene Liste iterieren.
for (int n : {1, 2, 4, 8, 16}) {
std::cout << n << " ";
}Umgekehrte Range-basierte Schleife
Eine standardmäßige Range-for-Schleife läuft vorwärts. Für eine umgekehrte Iteration verwenden Sie std::ranges::reverse_view (C++20) oder manuelle Reverse-Iteratoren.
#include <ranges>
for (auto x : v | std::views::reverse) {
std::cout << x;
}Einschränkungen
Eine Range-for-Schleife kann nicht:
- den aktuellen Index ohne einen separaten Zähler ermitteln
- Elemente überspringen oder den Container während der Iteration ändern
- zwei Container parallel durchlaufen (verwenden Sie eine reguläre for-Schleife oder zip)
Benutzerdefinierte Typen in Range-for
Damit Ihre eigene Klasse mit Range-for funktioniert, stellen Sie die Member begin() und end() oder freie Funktionen bereit, die Iteratoren zurückgeben.
Kurzer Test
Welche Form der range-basierten for-Schleife ändert die Elemente im Container?
Zusammenfassung
Range-basierte for-Schleifen sind die übersichtlichste Möglichkeit zu iterieren. Verwenden Sie standardmäßig const auto&, zum Ändern auto& und strukturierte Bindungen, um Paare und Tupel zu entpacken.
Häufig gestellte Fragen
Ist die Lektion „Range-basierte for-Schleifen mit Containern“ kostenlos?
Ja — der vollständige Text von „Range-basierte for-Schleifen mit Containern“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des C++ Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der C++ Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Range-basierte for-Schleifen mit Containern“?
Durchlaufen Sie Container übersichtlich mit der range-basierten for-Syntax aus C++11. Du übst C++ Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um C++ Academy zu starten?
Keine Vorkenntnisse erforderlich. C++ Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 4.
Wie lange dauert die Lektion „Range-basierte for-Schleifen mit Containern“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser C++ Academy-Lektion Code schreiben und ausführen?
Ja. Jede C++ Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Verzweigungen: if-else, ternär, switch-case
- Schleifenmuster: for, while, do-while
- Range-basierte for-Schleifen mit Containern
- Vorzeitige Rückgaben, break, continue und goto