Legarea structurii în C++

Legarea Structurii In C



Legarea structurii vă permite să extrageți elementele dintr-o structură sau clasă și să le atribuiți diferitelor variabile fără a avea acces la fiecare membru separat. Legarea structurii este folosită pentru a elimina necesitatea extragerii manuale a elementelor și îmbunătățește lizibilitatea și concizia codului, permițând despachetarea simultană a numeroaselor elemente ale unei structuri sau ale unei clase în variabile distincte. În acest tutorial, vom discuta lucrul, sintaxa și exemplele de legare a structurii în C++.

Ce este Structured Binding în C++?

Legarea structurii este o caracteristică C++ care a fost adăugată în C++17, care permite, de asemenea, descompunerea unei structuri sau a unui tuplu în variabile individuale, îmbunătățind concizia codului. Poate fi folosit pentru a simplifica sintaxa de acces la membrii struct și pentru a reduce posibilitatea erorilor cauzate de greșeli de scriere sau de indexare incorectă.

Sintaxă







Sintaxa legării structurii în C++ este următoarea:



auto [ var1 , var2 , ... ] = expresie ;

În sintaxa pentru legarea structurii în C++, unde „var1” și „var2” sunt nume de variabile, iar „expression” este o expresie care dă o structură sau o clasă. Folosim cuvinte cheie automate pentru a declara variabilele care sunt create automat.



Modificatori

Modificatorii pot fi utilizați în împerechere cu legături structurate. Sintaxa lor este menționată mai jos:





auto & [ A , b , c , ... ] = expresie ;

auto && [ A , b , c , ... ] = expresie ;

Operatorul „&” sau „&&” utilizat în declarație definește dacă legarea este o referință lvalue sau rvalue. O referință lvalue reprezentată de „&” stabilește o referință care poate fi utilizată pentru a modifica valorile variabilelor de legare. Modificările aduse valorilor făcute folosind referința vor fi văzute în structura sau tuplu original.

Referința rvalue reprezentată de „&&”, pe de altă parte, oferă o referință care se limitează la a fi utilizată pentru citirea valorii variabilelor incluse în legare. Este la îndemână pentru legarea la obiecte tranzitorii sau valori r care trebuie distruse, deoarece evită realizarea unei replicări a obiectului, acest lucru poate consuma memorie și timp.



Exemplul 1: Legarea structurii în C++

Următorul este un exemplu de legare a structurii C++:

#include

folosind namespace std ;

struct cub

{

int X ;

int și ;

int Cu ;

} ;

int principal ( )

{

c-cub = { 10 , douăzeci , 30 } ;

auto [ coordonata_x , y_coordonate , coordonata_z ] = c ;

cout << 'Axa X : ' << coordonata_x << endl ;

cout << 'Axa Y:' << y_coordonate << endl ;

cout << 'Axa Z:' << coordonata_z << endl ;

întoarcere 0 ;

}

În exemplul de mai sus, declarăm un cub struct cu trei numere întregi x, y și z. Structura prezintă un cub în spațiu. O variabilă c de tip cub este creată și inițializată cu valori (10,20,30). În această structură de cod, legarea atribuie valori ale membrilor x, y și z ale structurii variabilelor individuale x_coordinate, y_coordinate, z_coordinate, respectiv, folosind sintaxa auto[ x_coordinate, y_coordinate, z_coordinate ] = c. Rezultatul de mai sus este prezentat mai jos:

Exemplul 2: Legarea structurii în C++ pentru a despacheta un Struct

Următorul este un exemplu de legare a structurii de despachetare a unei structuri:

#include

#include <șir>

folosind namespace std ;

struct Student {

nume șir ;

int vârstă ;

} ;

int principal ( ) {

Elevi { 'Hamza' , 32 } ;

auto [ Nume , vârstă ] = s ;

cout << Nume << ' este ' << vârstă << ' varsta.' << endl ;

întoarcere 0 ;

}

În codul de mai sus, o structură Student are doi membri: a Nume adică o sfoară și o vârstă adică un număr întreg. Apoi, creăm obiectul Student și atribuim valori inițiale fiecăruia dintre membrii acestuia. Membrii lui s sunt apoi separați în numele și vârsta variabilei folosind legarea structurală, iar aceste valori sunt apoi tipărite ca în captura de ecran de mai jos:

Exemplul 3: Legarea structurii în C++ cu modificatori

Mai jos este un exemplu de legare a structurii care utilizează un modificator pentru a actualiza valoarea unei variabile ca num1 și num2:

#include

#include

folosind namespace std ;

int principal ( ) {

tuplu < int , int > t { 25 , douăzeci } ;

auto & [ num1 , num2 ] = t ;

cout << 'Valoarea lui num1 = ' << num1 << ', num2 = ' << num2 << ' \n ' ;

  num1 = 30 ;

cout << „Valoarea schimbată a num1 = ” << num1 << ', num2 = ' << num2 <<

' \n ' ;

auto && [ numărul 3 , num4 ] = make_tuple ( 100 , 250 ) ;

cout << 'Acum valoarea lui num3 = ' << numărul 3 << ', num4 = ' << num4 << ' \n ' ;

întoarcere 0 ;

}

În codul precedent, construim un tuplu t și folosim referința lvalue pentru a lega componentele sale la num1 și num2. Apoi schimbăm valoarea lui num1 la 30 și scoatem valorile num1 și num2. De asemenea, construiți un tuplu temporar prin make_tuple(100, 250) și utilizați o referință rvalue pentru a-și lega elementele la num3 și num4. Valorile lui num3 și num4 sunt apoi tipărite deoarece num3 și num4 sunt cuplate cu o referință rvalue, ele nu pot fi folosite pentru a schimba tuplul temporar format de make_tuple(100, 250). Sunt capabili doar să citească din ea. Când executați programul, următorul rezultat va fi afișat pe ecran:

Concluzie

Legarea structurii este o caracteristică din C++ care despachetează mai multe valori ale unei structuri sau ale unei clase în variabile individuale într-o singură expresie, rezultând un cod mai concis, mai lizibil și mai sigur. Legarea structurii folosind modificatori simplifică procesul de modificare a valorilor în cadrul obiectelor structurate.