Strukturbinding i C++

Strukturbinding I C



Strukturbinding lar deg trekke ut elementene fra en struktur eller klasse og tilordne dem til forskjellige variabler uten å ha tilgang til hvert medlem separat. Strukturbinding brukes til å eliminere behovet for manuell elementekstraksjon og forbedrer lesbarheten og konsisiteten til koden ved å tillate samtidig utpakking av flere elementer i en struktur eller klasse i distinkte variabler. I denne opplæringen vil vi diskutere arbeid, syntaks og eksempler på strukturbinding i C++.

Hva er strukturert binding i C++?

Strukturbinding er en C++-funksjon som ble lagt til i C++17 som også tillater dekomponering av en struktur eller tuppel til individuelle variabler, noe som forbedrer kodens konsisitet. Den kan brukes til å gjøre struct medlemstilgangssyntaks enklere og redusere muligheten for feil forårsaket av skrivefeil eller feil indeksering.

Syntaks







Syntaksen for strukturbinding i C++ er som følger:



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

I syntaksen for strukturbinding i C++, der 'var1' og 'var2' er variabelnavn, og 'uttrykk' er et uttrykk som gir en struktur eller klasse. Vi bruker automatiske nøkkelord for å deklarere variabler som opprettes automatisk.



Modifikatorer

Modifikatorer kan brukes i paring med strukturerte bindinger. Syntaksen deres er nevnt nedenfor:





auto & [ en , b , c , ... ] = uttrykk ;

auto && [ en , b , c , ... ] = uttrykk ;

Operatoren '&' eller '&&' som brukes i erklæringen definerer om bindingen er en lvalue- eller rvalue-referanse. En lverdireferanse representert med '&' etablerer en referanse som kan brukes til å endre verdiene til bindingsvariablene. Endringer i verdiene som er gjort ved hjelp av referansen vil bli sett i den opprinnelige strukturen eller tuppelen.

rvalue-referansen representert ved '&&', på motsatt side, gir en referanse som er begrenset til å brukes til å lese verdien av variablene som er inkludert i bindingen. Den er nyttig for binding til forbigående objekter eller rverdier som må ødelegges siden den unngår å lage en kopi av objektet, dette kan være minne og tidkrevende.



Eksempel 1: Strukturbinding i C++

Følgende er et eksempel på C++ strukturbinding:

#include

bruker navneområde std ;

struktur kube

{

int x ;

int og ;

int Med ;

} ;

int hoved- ( )

{

c-kuben = { 10 , tjue , 30 } ;

auto [ x_koordinat , y_koordinat , z_koordinat ] = c ;

cout << 'X-akse:' << x_koordinat << endl ;

cout << 'Y-akse:' << y_koordinat << endl ;

cout << 'Z-akse:' << z_koordinat << endl ;

komme tilbake 0 ;

}

I eksemplet ovenfor erklærer vi en strukturkube med tre heltall x, y og z. Strukturen viser en kube i rommet. En variabel c av typen kube opprettes og initialiseres med verdier (10,20,30). I denne kodestrukturen tildeler binding verdiene av medlemmene x, y og z av struct til de individuelle variablene henholdsvis x_coordinate, y_coordinate, z_coordinate ved å bruke syntaks auto[ x_coordinate, y_coordinate, z_coordinate ] = c. Utgangen av ovenstående er vist nedenfor:

Eksempel 2: Strukturbinding i C++ for å pakke ut en struktur

Følgende er et eksempel på strukturbinding ved utpakking av en struktur:

#include

#inkluder

bruker navneområde std ;

struktur Student {

strengnavn ;

int alder ;

} ;

int hoved- ( ) {

Student s { 'Hamza' , 32 } ;

auto [ Navn , alder ] = s ;

cout << Navn << ' er ' << alder << ' år gammel.' << endl ;

komme tilbake 0 ;

}

I koden ovenfor har en studentstruktur to medlemmer: a Navn det er en streng og en alder det er et heltall. Deretter oppretter vi Student-objektet og tildeler startverdier til hvert av medlemmene. Medlemmene av s blir deretter separert i variabelens navn og alder ved hjelp av strukturell binding, og disse verdiene skrives deretter ut som i skjermbildet nedenfor:

Eksempel 3: Strukturbinding i C++ med modifikatorer

Nedenfor er et eksempel på strukturbinding som bruker en modifikator for å oppdatere verdien av en variabel som num1 og num2:

#include

#inkluder

bruker navneområde std ;

int hoved- ( ) {

tuppel < int , int > t { 25 , tjue } ;

auto & [ nummer1 , nummer2 ] = t ;

cout << 'Verdien av num1 = ' << nummer1 << ', num2 = ' << nummer2 << ' \n ' ;

nummer1 = 30 ;

cout << 'Den endrede verdien av num1 = ' << nummer1 << ', num2 = ' << nummer2 <<

' \n ' ;

auto && [ nummer 3 , nummer 4 ] = make_tuple ( 100 , 250 ) ;

cout << 'Nå verdien av num3 = ' << nummer 3 << ', num4 = ' << nummer 4 << ' \n ' ;

komme tilbake 0 ;

}

I den foregående koden bygger vi en tuppel t og bruker lvalue-referansen til å koble komponentene til num1 og num2. Vi endrer deretter verdien av num1 til 30 og sender ut verdiene num1 og num2. Bygg også en midlertidig tuppel via make_tuple(100, 250) og bruk en rvalue-referanse for å knytte elementene til num3 og num4. Verdiene til num3 og num4 skrives deretter ut fordi num3 og num4 er kombinert med en rvalue-referanse, de kan ikke brukes til å endre den midlertidige tuppelen dannet av make_tuple(100, 250). De er bare i stand til å lese fra den. Når du kjører programmet, vil følgende resultat vises på skjermen:

Konklusjon

Strukturbinding er en funksjon i C++ som pakker ut flere verdier av en struktur eller klasse i individuelle variabler i et enkelt uttrykk, noe som resulterer i mer kortfattet, lesbar og sikrere kode. Strukturbinding ved bruk av modifikatorer effektiviserer prosessen med å endre verdier i strukturerte objekter.