Liaisons structurées et if-init en C++17
Décomposer des tuples et des paires avec des liaisons structurées et utiliser les instructions if-init
Liaisons structurées et if-init en C++17 est une leçon C++ Academy gratuite sur CoddyKit. Ceci est la leçon 4 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage C++ Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours C++ Academy comprend 4 leçons au total.
Déstructuration en C++ moderne
C++17 a ajouté les liaisons structurées — un moyen clair de décomposer des tuples, des paires, des tableaux et des agrégats en variables nommées individuelles.
La forme de base
Utilisez auto [a, b, ...] pour déclarer des variables liées aux éléments de la valeur située à droite.
std::pair<std::string, int> p = {"Ada", 30};
auto [name, age] = p;
std::cout << name << " is " << age;Lier les éléments d’une table associative
L’amélioration la plus évidente concerne l’itération sur une table associative. Fini les it.first et it.second.
std::map<std::string, int> ages = {{"Ada",30},{"Bob",24}};
for (const auto& [name, age] : ages) {
std::cout << name << " " << age << "\n";
}Liaisons par référence
Utilisez auto& pour effectuer une liaison par référence. Modifier les noms liés modifie l’objet sous-jacent.
std::pair<int, int> p = {1, 2};
auto& [a, b] = p;
a = 99;
std::cout << p.first; // 99Liaisons const
Utilisez const auto& pour déstructurer en lecture seule sans effectuer de copie.
for (const auto& [key, value] : map) {
// read only
}Lier des tableaux et des tuples
Cela fonctionne avec tout type prenant en charge l’interface de type tuple, notamment les tableaux C et 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;Lier des structures simples
Vous pouvez déstructurer toute structure dont les membres sont publics. Les noms sont déduits selon l’ordre de déclaration.
struct Point { int x; int y; };
Point pt{3, 4};
auto [x, y] = pt;
std::cout << x << ", " << y;Instructions d’initialisation dans if
C++17 a également ajouté les instructions d’initialisation pour if et switch. Déclarez une variable temporaire dans l’en-tête : sa portée correspond au corps de if/switch.
if (auto it = map.find("Ada"); it != map.end()) {
std::cout << it->second;
} else {
std::cout << "not found";
}Combiner les deux fonctionnalités
Les liaisons et l’initialisation dans if fonctionnent ensemble pour produire un code élégant.
if (auto [it, inserted] = m.insert({"key", 42}); inserted) {
std::cout << "added";
} else {
std::cout << "already present";
}Durée de vie des liaisons
Les liaisons font référence à des sous-objets d’une variable anonyme sous-jacente. Elles existent jusqu’à la fin de la portée englobante — leur durée de vie est la même que celle d’une variable locale normale.
Quand NE PAS utiliser les liaisons
Si le nom d’un membre possède un sens que le nom de liaison ferait perdre, préférez l’accès explicite au membre. La lisibilité prime sur la concision.
Vérification rapide
Quelle fonctionnalité de C++17 vous permet de parcourir std::map avec des éléments nommés pour chaque paire ?
Récapitulatif
Les liaisons structurées décomposent les paires, les tuples, les tableaux et les structures en variables nommées. Combinées aux instructions d’initialisation dans if de C++17, elles rendent le code d’itération et de recherche beaucoup plus clair.
Questions Fréquemment Posées
La leçon « Liaisons structurées et if-init en C++17 » est-elle gratuite ?
Oui — le texte complet de « Liaisons structurées et if-init en C++17 » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours C++ Academy, passe à CoddyKit PRO. Le cours C++ Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Liaisons structurées et if-init en C++17 » ?
Décomposer des tuples et des paires avec des liaisons structurées et utiliser les instructions if-init Tu pratiques C++ Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer C++ Academy ?
Aucune expérience préalable n'est requise. C++ Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 4 sur 4.
Combien de temps prend la leçon « Liaisons structurées et if-init en C++17 » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon C++ Academy ?
Oui. Chaque leçon C++ Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- auto, decltype et déduction de type
- for basé sur une plage, nullptr et enum class
- Expressions lambda : capture, mutable et génériques
- Liaisons structurées et if-init en C++17