Qu'est-ce que la liaison structurée en C++ ?
La liaison de structure est une fonctionnalité C++ ajoutée en C++17 qui permet également la décomposition d'une structure ou d'un tuple en variables individuelles, améliorant ainsi la concision du code. Il peut être utilisé pour simplifier la syntaxe d'accès aux membres de la structure et réduire le risque d'erreurs provoquées par des fautes de frappe ou une indexation incorrecte.
Syntaxe
La syntaxe de la liaison de structure en C++ est la suivante :
auto [ var1 , var2 , ... ] = expression ;
Dans la syntaxe de la liaison de structure en C++, où « var1 » et « var2 » sont des noms de variables, et « expression » est une expression qui produit une structure ou une classe. Nous utilisons des mots-clés automatiques pour déclarer des variables qui sont automatiquement créées.
Modificateurs
Les modificateurs peuvent être utilisés en association avec des liaisons structurées. Leur syntaxe est mentionnée ci-dessous :
auto & [ un , b , c , ... ] = expression ;
auto && [ un , b , c , ... ] = expression ;
L'opérateur '&' ou '&&' utilisé dans la déclaration définit si la liaison est une référence lvalue ou rvalue. Une référence lvalue représentée par « & » établit une référence qui peut être utilisée pour modifier les valeurs des variables de liaison. Les modifications apportées aux valeurs effectuées à l'aide de la référence seront visibles dans la structure ou le tuple d'origine.
La référence rvalue représentée par '&&', en revanche, fournit une référence qui se limite à être utilisée pour lire la valeur des variables incluses dans la liaison. C'est pratique pour lier des objets transitoires ou des rvalues qui doivent être détruits car cela évite de faire une réplique de l'objet, cela peut prendre beaucoup de temps et de mémoire.
Exemple 1 : liaison de structure en C++
Voici un exemple de liaison de structure C++ :
#includeen utilisant l'espace de noms std ;
structure cube
{
entier X ;
entier et ;
entier Avec ;
} ;
entier principal ( )
{
cube c = { dix , vingt , 30 } ;
auto [ coordonnée_x , coordonnée_y , coordonnée_z ] = c ;
écoute << 'Axe X :' << coordonnée_x << fin ;
écoute << 'Axe Y : ' << coordonnée_y << fin ;
écoute << 'Axe z : ' << coordonnée_z << fin ;
retour 0 ;
}
Dans l'exemple ci-dessus, nous déclarons un struct cube avec trois entiers x, y et z. La structure montre un cube dans l'espace. Une variable c de type cube est créée et initialisée avec les valeurs (10,20,30). Dans cette structure de code, la liaison attribue les valeurs des membres x, y et z de struct aux variables individuelles x_coordinate, y_coordinate, z_coordinate respectivement en utilisant la syntaxe auto[ x_coordinate, y_coordinate, z_coordinate ] = c. La sortie de ce qui précède est illustrée ci-dessous :
Exemple 2 : liaison de structure en C++ pour décompresser une structure
Voici un exemple de liaison de structure consistant à déballer une structure :
#include#include
en utilisant l'espace de noms std ;
structure Étudiant {
nom de chaîne ;
entier âge ;
} ;
entier principal ( ) {
Étudiants { 'Hamza' , 32 } ;
auto [ nom , âge ] = s ;
écoute << nom << ' est ' << âge << ' ans.' << fin ;
retour 0 ;
}
Dans le code ci-dessus, une structure Student a deux membres : un nom c'est une chaîne et un âge c'est un entier. Ensuite, nous créons l'objet Student et attribuons des valeurs initiales à chacun de ses membres. Les membres de s sont ensuite séparés en nom et âge de la variable à l'aide de la liaison structurelle, et ces valeurs sont ensuite imprimées comme dans la capture d'écran ci-dessous :
Exemple 3 : liaison de structure en C++ avec modificateurs
Vous trouverez ci-dessous un exemple de liaison de structure qui utilise un modificateur pour mettre à jour la valeur d'une variable en tant que num1 et num2 :
#include#include
en utilisant l'espace de noms std ;
entier principal ( ) {
tuple < entier , entier > t { 25 , vingt } ;
auto & [ num1 , num2 ] = t ;
écoute << 'La valeur de num1 = ' << num1 << ', num2 = ' << num2 << ' \n ' ;
num1 = 30 ;
écoute << 'La valeur modifiée de num1 = ' << num1 << ', num2 = ' << num2 <<
' \n ' ;
auto && [ numéro 3 , num4 ] = make_tuple ( 100 , 250 ) ;
écoute << 'Maintenant la valeur de num3 = ' << numéro 3 << ', num4 = ' << num4 << ' \n ' ;
retour 0 ;
}
Dans le code précédent, nous construisons un tuple t et utilisons la référence lvalue pour lier ses composants à num1 et num2. Nous changeons ensuite la valeur de num1 en 30 et produisons les valeurs num1 et num2. Construisez également un tuple temporaire via make_tuple(100, 250) et utilisez une référence rvalue pour lier ses éléments à num3 et num4. Les valeurs de num3 et num4 sont ensuite imprimées car num3 et num4 sont couplés à une référence rvalue, elles ne peuvent pas être utilisées pour modifier le tuple temporaire formé par make_tuple(100, 250). Ils ne sont capables que de le lire. Lorsque vous exécutez le programme, le résultat suivant s'affiche à l'écran :
Conclusion
La liaison de structure est une fonctionnalité de C++ qui décompresse plusieurs valeurs d'une structure ou d'une classe en variables individuelles dans une seule expression, ce qui donne un code plus concis, lisible et plus sûr. La liaison de structure à l'aide de modificateurs rationalise le processus de modification des valeurs dans les objets structurés.