0Pricing
C++ Academy · Lektion

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

  1. Verzweigungen: if-else, ternär, switch-case
  2. Schleifenmuster: for, while, do-while
  3. Range-basierte for-Schleifen mit Containern
  4. Vorzeitige Rückgaben, break, continue und goto
← Zurück zu C++ Academy