Structured bindings en if-init in C++17
Destructureer tuples en pairs met structured bindings en gebruik if-init-instructies
Structured bindings en if-init in C++17 is een gratis C++ Academy-les op CoddyKit. Dit is les 4 van 4. Je kunt 3 lessen uit dit leerpad gratis volledig lezen — daarna ontgrendelt CoddyKit PRO alle lessen, plus praktische oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject C++ Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus C++ Academy bevat in totaal 4 lessen.
Destructureren in modern C++
C++17 voegde gestructureerde bindingen toe — een nette manier om tuples, paren, arrays en aggregaten uit te pakken in afzonderlijke benoemde variabelen.
De basisvorm
Gebruik auto [a, b, ...] om variabelen te declareren die aan de onderdelen van de waarde rechts worden gebonden.
std::pair<std::string, int> p = {"Ada", 30};
auto [name, age] = p;
std::cout << name << " is " << age;Een map-iteratie binden
De duidelijkste verbetering: itereren over een map. Geen it.first en it.second meer.
std::map<std::string, int> ages = {{"Ada",30},{"Bob",24}};
for (const auto& [name, age] : ages) {
std::cout << name << " " << age << "\n";
}Bindingen via referentie
Gebruik auto& om via een referentie te binden. Als je de gebonden namen wijzigt, verandert het onderliggende object.
std::pair<int, int> p = {1, 2};
auto& [a, b] = p;
a = 99;
std::cout << p.first; // 99const-bindingen
Gebruik const auto& om alleen-lezen te destructureren zonder te kopiëren.
for (const auto& [key, value] : map) {
// read only
}Arrays en tuples binden
Werkt met elk type dat de tuple-achtige interface ondersteunt — waaronder C-arrays en 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;Gewone structs binden
Je kunt elke struct destructureren waarvan de leden openbaar zijn. Namen worden afgeleid uit de volgorde van de declaraties.
struct Point { int x; int y; };
Point pt{3, 4};
auto [x, y] = pt;
std::cout << x << ", " << y;if-init-instructies
C++17 voegde ook initialisatie-instructies toe voor if en switch. Declareer een tijdelijke variabele in de kop — het bereik ervan is het blok van de if/switch.
if (auto it = map.find("Ada"); it != map.end()) {
std::cout << it->second;
} else {
std::cout << "not found";
}Beide functies combineren
Bindingen en if-init werken samen voor elegante code.
if (auto [it, inserted] = m.insert({"key", 42}); inserted) {
std::cout << "added";
} else {
std::cout << "already present";
}Levensduur van bindingen
De bindingen verwijzen naar deelobjecten van een onderliggende anonieme variabele. Ze blijven bestaan tot het einde van het omringende bereik — dezelfde levensduur als een normale lokale variabele.
Wanneer je bindingen NIET moet gebruiken
Als een ledennaam betekenis heeft die verloren gaat met de naam van de binding, geef dan de voorkeur aan expliciete toegang tot het lid. Leesbaarheid is belangrijker dan beknoptheid.
Korte controle
Met welke functie van C++17 kun je std::map doorlopen met benoemde onderdelen van elk paar?
Samenvatting
Gestructureerde bindingen destructureren paren, tuples, arrays en structs tot benoemde variabelen. In combinatie met if-init-instructies van C++17 maken ze code voor iteratie en opzoeken veel overzichtelijker.
Leer C++ met een AI-tutor — gratis
Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.
- Cursussen
- 51
- Lessen
- 203
Veelgestelde vragen
Is de les “Structured bindings en if-init in C++17” gratis?
Ja — je kunt hier op het web alle 3 lessen van het leerpad C++ Academy, waaronder “Structured bindings en if-init in C++17”, gratis volledig lezen. Daarna ontgrendelt CoddyKit PRO alle lessen, plus interactieve oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. De cursus C++ Academy bevat in totaal 4 lessen.
Wat leer ik in “Structured bindings en if-init in C++17”?
Destructureer tuples en pairs met structured bindings en gebruik if-init-instructies Je oefent met C++ Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.
Heb ik ervaring nodig om met C++ Academy te beginnen?
Ervaring vooraf is niet nodig. C++ Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 4 van 4.
Hoe lang duurt de les “Structured bindings en if-init in C++17”?
De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.
Kan ik code schrijven en uitvoeren in deze les over C++ Academy?
Ja. Elke les over C++ Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.
Alle lessen in deze cursus
- auto, decltype en type-afleiding
- Range-based for, nullptr en enum class
- Lambda-expressies: capture, mutable, generic
- Structured bindings en if-init in C++17