0Pricing
C++ Academy · Lektion

Strukturierte Bindings und if-init in C++17

Zerlegen Sie Tupel und Paare mit strukturierten Bindings und verwenden Sie if-init-Anweisungen.

Strukturierte Bindings und if-init in C++17 ist eine kostenlose C++ Academy-Lektion auf CoddyKit. Dies ist Lektion 4 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.

Destrukturierung im modernen C++

C++17 führte strukturierte Bindings ein – eine übersichtliche Möglichkeit, Tupel, Paare, Arrays und Aggregate in einzelne benannte Variablen zu entpacken.

Die Grundform

Verwenden Sie auto [a, b, ...], um Variablen zu deklarieren, die an die Bestandteile des Werts auf der rechten Seite gebunden sind.

std::pair<std::string, int> p = {"Ada", 30};
auto [name, age] = p;
std::cout << name << " is " << age;

Eine Map-Iteration binden

Die sauberste Verbesserung zeigt sich bei Map-Iterationen. Kein it.first und it.second mehr.

std::map<std::string, int> ages = {{"Ada",30},{"Bob",24}};
for (const auto& [name, age] : ages) {
    std::cout << name << " " << age << "\n";
}

Referenzbindungen

Verwenden Sie auto&, um per Referenz zu binden. Änderungen an den gebundenen Namen ändern das zugrunde liegende Objekt.

std::pair<int, int> p = {1, 2};
auto& [a, b] = p;
a = 99;
std::cout << p.first;   // 99

const-Bindungen

Verwenden Sie const auto& für eine schreibgeschützte Destrukturierung ohne Kopieren.

for (const auto& [key, value] : map) {
    // read only
}

Arrays und Tupel binden

Funktioniert mit jedem Typ, der die tuple-ähnliche Schnittstelle unterstützt – einschließlich C-Arrays und std::tuple.

int arr[3] = {1, 2, 3};
auto [x, y, z] = arr;

std::tuple<int, std::string, double> t = {1, "hi", 3.14};
auto [a, s, d] = t;

Einfache Structs binden

Sie können jede Struct destrukturieren, deren Member öffentlich sind. Die Namen werden aus der Reihenfolge der Deklarationen abgeleitet.

struct Point { int x; int y; };
Point pt{3, 4};
auto [x, y] = pt;
std::cout << x << ", " << y;

if-init-Anweisungen

C++17 führte außerdem Init-Anweisungen für if und switch ein. Deklarieren Sie eine temporäre Variable im Header – ihr Gültigkeitsbereich umfasst den Rumpf der if- oder switch-Anweisung.

if (auto it = map.find("Ada"); it != map.end()) {
    std::cout << it->second;
} else {
    std::cout << "not found";
}

Beide Features kombinieren

Bindings und if-init-Anweisungen lassen sich für eleganten Code kombinieren.

if (auto [it, inserted] = m.insert({"key", 42}); inserted) {
    std::cout << "added";
} else {
    std::cout << "already present";
}

Lebensdauer von Bindings

Die Bindings verweisen auf Unterobjekte einer zugrunde liegenden anonymen Variablen. Sie leben bis zum Ende des umschließenden Gültigkeitsbereichs – genauso lange wie eine normale lokale Variable.

Wann Sie KEINE Bindings verwenden sollten

Wenn ein Membername eine Bedeutung vermittelt, die durch den Binding-Namen verloren ginge, bevorzugen Sie den expliziten Memberzugriff. Lesbarkeit ist wichtiger als Kürze.

Kurzer Test

Mit welcher C++17-Funktion können Sie std::map durchlaufen und dabei auf die benannten Bestandteile jedes Paars zugreifen?

Zusammenfassung

Strukturierte Bindings zerlegen Paare, Tupel, Arrays und Structs in benannte Variablen. Zusammen mit C++17-if-init-Anweisungen machen sie Code für Iterationen und Suchen deutlich übersichtlicher.

Häufig gestellte Fragen

Ist die Lektion „Strukturierte Bindings und if-init in C++17“ kostenlos?

Ja — der vollständige Text von „Strukturierte Bindings und if-init in C++17“ 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 „Strukturierte Bindings und if-init in C++17“?

Zerlegen Sie Tupel und Paare mit strukturierten Bindings und verwenden Sie if-init-Anweisungen. 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 4 von 4.

Wie lange dauert die Lektion „Strukturierte Bindings und if-init in C++17“?

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. auto, decltype und Typherleitung
  2. Range-basierte for-Schleife, nullptr und enum class
  3. Lambda-Ausdrücke: Capture, mutable, generisch
  4. Strukturierte Bindings und if-init in C++17
← Zurück zu C++ Academy