Què és l'enllaç estructurat en C++?
L'enllaç d'estructura és una característica de C++ que es va afegir a C++17 que també permet la descomposició d'una estructura o tupla en variables individuals, millorant la concisió del codi. Es pot utilitzar per simplificar la sintaxi d'accés als membres d'struct i reduir la possibilitat d'errors provocats per errors ortogràfics o indexació incorrecta.
Sintaxi
La sintaxi de l'enllaç d'estructura en C++ és la següent:
automàtic [ var1 , var2 , ... ] = expressió ;
A la sintaxi de l'enllaç d'estructura en C++, on 'var1' i 'var2' són noms de variables i 'expression' és una expressió que produeix una estructura o classe. Utilitzem paraules clau auto per declarar variables que es creen automàticament.
Modificadors
Els modificadors es poden utilitzar en aparellament amb enllaços estructurats. La seva sintaxi s'esmenta a continuació:
automàtic & [ a , b , c , ... ] = expressió ;
automàtic && [ a , b , c , ... ] = expressió ;
L'operador '&' o '&&' utilitzat a la declaració defineix si l'enllaç és una referència lvalue o rvalue. Una referència de lvalue representada per '&' estableix una referència que es pot utilitzar per canviar els valors de les variables d'enllaç. Els canvis en els valors fets amb la referència es veuran a l'estructura o tupla original.
La referència rvalue representada per “&&”, en canvi, proporciona una referència que es limita a utilitzar-se per llegir el valor de les variables incloses a l'enllaç. És útil per vincular-se a objectes transitoris o valors r que s'han de destruir, ja que evita fer una rèplica de l'objecte, això pot ser de memòria i de temps.
Exemple 1: Enllaç d'estructura en C++
El següent és un exemple d'enllaç d'estructura C++:
#inclouutilitzant l'espai de noms std ;
estructura cub
{
int x ;
int i ;
int Amb ;
} ;
int principal ( )
{
c-cub = { 10 , 20 , 30 } ;
automàtic [ coordenada_x , i_coordinate , coordenada_z ] = c ;
cout << 'Eix X:' << coordenada_x << endl ;
cout << 'I axis:' << i_coordinate << endl ;
cout << 'Eix Z:' << coordenada_z << endl ;
tornar 0 ;
}
A l'exemple anterior, declarem un cub d'estructura amb tres nombres enters x, y i z. L'estructura mostra un cub a l'espai. Es crea una variable c de tipus cub i s'inicia amb valors (10,20,30). En aquesta estructura de codi, l'enllaç assigna valors dels membres x, y i z de l'estructura a les variables individuals x_coordinate, y_coordinate, z_coordinate respectivament utilitzant la sintaxi auto[ x_coordinate, y_coordinate, z_coordinate ] = c. La sortida de l'anterior es mostra a continuació:
Exemple 2: Enllaç d'estructura en C++ per desempaquetar una estructura
A continuació es mostra un exemple d'enllaç d'estructura per desempaquetar una estructura:
#inclou#inclou
utilitzant l'espai de noms std ;
estructura Estudiant {
nom de cadena ;
int edat ;
} ;
int principal ( ) {
Estudiant s { 'Hamza' , 32 } ;
automàtic [ nom , edat ] = s ;
cout << nom << ' és ' << edat << ' anys.' << endl ;
tornar 0 ;
}
Al codi anterior, una estructura Student té dos membres: a nom això és una corda i un edat que és un nombre enter. Aleshores, creem l'objecte Student i assignem valors inicials a cadascun dels seus membres. Els membres de s es separen en el nom i l'edat de la variable mitjançant l'enllaç estructural, i aquests valors s'imprimeixen com a la captura de pantalla següent:
Exemple 3: Enllaç d'estructura en C++ amb modificadors
A continuació es mostra un exemple d'enllaç d'estructura que fa ús d'un modificador per actualitzar el valor d'una variable com a num1 i num2:
#inclou#inclou
utilitzant l'espai de noms std ;
int principal ( ) {
tupla < int , int > t { 25 , 20 } ;
automàtic & [ núm1 , num2 ] = t ;
cout << 'El valor de num1 = ' << núm1 << ', num2 = ' << num2 << ' \n ' ;
núm1 = 30 ;
cout << 'El valor canviat de num1 = ' << núm1 << ', num2 = ' << num2 <<
' \n ' ;
automàtic && [ número 3 , num4 ] = make_tuple ( 100 , 250 ) ;
cout << 'Ara el valor de num3 = ' << número 3 << ', num4 = ' << num4 << ' \n ' ;
tornar 0 ;
}
En el codi anterior, construïm una tupla t i utilitzem la referència lvalue per enllaçar els seus components a num1 i num2. A continuació, canviem el valor de num1 a 30 i emetem els valors num1 i num2. També creeu una tupla temporal mitjançant make_tuple(100, 250) i utilitzeu una referència rvalue per vincular els seus elements a num3 i num4. Els valors de num3 i num4 s'imprimeixen perquè num3 i num4 estan acoblats amb una referència rvalue, no es poden utilitzar per canviar la tupla temporal formada per make_tuple(100, 250). Només són capaços de llegir-ne. Quan executeu el programa, es mostrarà el següent resultat a la pantalla:
Conclusió
L'enllaç d'estructura és una característica de C++ que desempaqueta diversos valors d'una estructura o classe en variables individuals en una sola expressió, donant lloc a un codi més concís, llegible i més segur. L'enllaç d'estructura mitjançant modificadors agilitza el procés de canvi de valors dins dels objectes estructurats.