Associazione di strutture in C++

Associazione Di Strutture In C



Il binding della struttura consente di estrarre gli elementi da una struttura o da una classe e assegnarli a variabili diverse senza avere accesso a ciascun membro separatamente. Il binding della struttura viene utilizzato per eliminare la necessità dell'estrazione manuale degli elementi e migliora la leggibilità e la concisione del codice consentendo l'estrazione simultanea di numerosi elementi di una struttura o di una classe in variabili distinte. In questo tutorial, discuteremo il funzionamento, la sintassi e gli esempi di associazione di strutture in C++.

Che cos'è l'associazione strutturata in C++?

Il binding di struttura è una funzionalità C++ aggiunta in C++ 17 che consente anche la scomposizione di uno struct o di una tupla in singole variabili, migliorando la concisione del codice. Può essere utilizzato per semplificare la sintassi di accesso ai membri struct e ridurre la possibilità di errori causati da errori di battitura o indicizzazione errata.

Sintassi







La sintassi del binding della struttura in C++ è la seguente:



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

Nella sintassi per l'associazione di strutture in C++, dove 'var1' e 'var2' sono nomi di variabili e 'espressione' è un'espressione che restituisce una struttura o una classe. Utilizziamo parole chiave automatiche per dichiarare le variabili che vengono create automaticamente.



Modificatori

I modificatori possono essere utilizzati in associazione con associazioni strutturate. La loro sintassi è menzionata di seguito:





auto & [ UN , B , C , ... ] = espressione ;

auto && [ UN , B , C , ... ] = espressione ;

L'operatore '&' o '&&' utilizzato nella dichiarazione definisce se l'associazione è un riferimento lvalue o rvalue. Un riferimento lvalue rappresentato da '&' stabilisce un riferimento che può essere utilizzato per modificare i valori delle variabili di associazione. Le modifiche ai valori apportate utilizzando il riferimento verranno visualizzate nella struttura o tupla originale.

Il riferimento di valore rappresentato da “&&”, invece, fornisce un riferimento che si limita ad essere utilizzato per leggere il valore delle variabili incluse nel binding. È utile per l'associazione a oggetti transitori o rvalue che devono essere distrutti poiché evita di creare una replica dell'oggetto, questo può richiedere memoria e richiedere molto tempo.



Esempio 1: associazione struttura in C++

Di seguito è riportato un esempio di binding della struttura C++:

#include

utilizzando lo spazio dei nomi std ;

struct cubo

{

int X ;

int E ;

int Con ;

} ;

int principale ( )

{

c-cubo = { 10 , venti , 30 } ;

auto [ coordinata_x , coordinata_y , coordinata_z ] = C ;

cout << 'Asse X: ' << coordinata_x << finel ;

cout << 'Asse Y : ' << coordinata_y << finel ;

cout << 'Asse Z: ' << coordinata_z << finel ;

ritorno 0 ;

}

Nell'esempio precedente, dichiariamo un cubo struct con tre numeri interi x, y e z. La struttura mostra un cubo nello spazio. Una variabile c di tipo cube viene creata e inizializzata con i valori (10,20,30). In questa struttura di codice l'associazione assegna i valori dei membri x, y e z di struct rispettivamente alle singole variabili x_coordinate, y_coordinate, z_coordinate utilizzando la sintassi auto[ x_coordinate, y_coordinate, z_coordinate ] = c. L'output di quanto sopra è mostrato di seguito:

Esempio 2: associazione di strutture in C++ per decomprimere una struttura

Di seguito è riportato un esempio di binding della struttura di spacchettamento di una struct:

#include

#include

utilizzando lo spazio dei nomi std ;

struct Alunno {

nome stringa ;

int età ;

} ;

int principale ( ) {

Studenti { 'Hamma' , 32 } ;

auto [ nome , età ] = S ;

cout << nome << ' È ' << età << ' Anni.' << finel ;

ritorno 0 ;

}

Nel codice precedente, una struttura Student ha due membri: a nome questa è una stringa e un età questo è un numero intero. Quindi, creiamo l'oggetto Student e assegniamo i valori iniziali a ciascuno dei suoi membri. I membri di s vengono quindi separati nel nome e nell'età della variabile utilizzando l'associazione strutturale e questi valori vengono quindi stampati come nello screenshot seguente:

Esempio 3: associazione struttura in C++ con modificatori

Di seguito è riportato un esempio di binding di struttura che utilizza un modificatore per aggiornare il valore di una variabile come num1 e num2:

#include

#include

utilizzando lo spazio dei nomi std ;

int principale ( ) {

tupla < int , int > T { 25 , venti } ;

auto & [ num1 , num2 ] = T ;

cout << 'Il valore di num1 =' << num1 << ', num2 = ' << num2 << ' \N ' ;

num1 = 30 ;

cout << 'Il valore modificato di num1 =' << num1 << ', num2 = ' << num2 <<

' \N ' ;

auto && [ numero 3 , num4 ] = make_tuple ( 100 , 250 ) ;

cout << 'Ora il valore di num3 =' << numero 3 << ', numero4 = ' << num4 << ' \N ' ;

ritorno 0 ;

}

Nel codice precedente, costruiamo una tupla t e usiamo il riferimento lvalue per collegare i suoi componenti a num1 e num2. Quindi modifichiamo il valore di num1 in 30 e produciamo i valori num1 e num2. Costruisci anche una tupla temporanea tramite make_tuple(100, 250) e usa un riferimento rvalue per legare i suoi elementi a num3 e num4. I valori di num3 e num4 vengono quindi stampati poiché num3 e num4 sono accoppiati con un riferimento rvalue, non possono essere utilizzati per modificare la tupla temporanea formata da make_tuple(100, 250). Sono solo in grado di leggere da esso. Quando si esegue il programma, sullo schermo verrà visualizzato il seguente risultato:

Conclusione

Il binding della struttura è una funzionalità in C++ che decomprime più valori di una struttura o di una classe in singole variabili in una singola espressione, risultando in un codice più conciso, leggibile e più sicuro. L'associazione di strutture tramite modificatori semplifica il processo di modifica dei valori all'interno di oggetti strutturati.