Strukturbindning i C++

Strukturbindning I C



Strukturbindning låter dig extrahera elementen från en struktur eller klass och tilldela dem till olika variabler utan att ha tillgång till varje medlem separat. Strukturbindning används för att eliminera behovet av manuell elementextraktion och förbättrar läsbarheten och koncisiteten hos koden genom att tillåta samtidig uppackning av flera element i en struktur eller klass till distinkta variabler. I den här handledningen kommer vi att diskutera arbete, syntax och exempel på strukturbindning i C++.

Vad är strukturerad bindning i C++?

Strukturbindning är en C++-funktion som lades till i C++17 som också tillåter nedbrytning av en struktur eller tupel till individuella variabler, vilket förbättrar kodens koncisitet. Det kan användas för att göra syntaxen för structmedlemsåtkomst enklare och minska risken för fel orsakade av stavfel eller felaktig indexering.

Syntax







Syntaxen för strukturbindning i C++ är som följer:



bil [ var1 , var2 , ... ] = uttryck ;

I syntaxen för strukturbindning i C++, där 'var1' och 'var2' är variabelnamn och 'uttryck' är ett uttryck som ger en struktur eller klass. Vi använder automatiska nyckelord för att deklarera variabler som skapas automatiskt.



Modifierare

Modifierare kan användas i parning med strukturerade bindningar. Deras syntax nämns nedan:





bil & [ a , b , c , ... ] = uttryck ;

bil && [ a , b , c , ... ] = uttryck ;

Operatorn '&' eller '&&' som används i deklarationen definierar om bindningen är en lvalue- eller rvalue-referens. En lvalue-referens representerad av '&' upprättar en referens som kan användas för att ändra värdena för de bindande variablerna. Ändringar av värdena som gjorts med hjälp av referensen kommer att ses i den ursprungliga strukturen eller tuppeln.

Referensen rvalue representerad av '&&', å andra sidan, ger en referens som är begränsad till att användas för att läsa värdet på variablerna som ingår i bindningen. Det är praktiskt för att binda till övergående objekt eller r-värden som måste förstöras eftersom det undviker att göra en kopia av objektet, detta kan vara minne och tidskrävande.



Exempel 1: Strukturbindning i C++

Följande är ett exempel på C++-strukturbindning:

#include

använder namnutrymme std ;

struktur kub

{

int x ;

int och ;

int Med ;

} ;

int huvud ( )

{

c-kub = { 10 , tjugo , 30 } ;

bil [ x_koordinat , y_koordinat , z_koordinat ] = c ;

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

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

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

lämna tillbaka 0 ;

}

I exemplet ovan deklarerar vi en strukturkub med tre heltal x, y och z. Strukturen visar en kub i rymden. En variabel c av typen kub skapas och initieras med värden (10,20,30). I denna kodstruktur tilldelar bindning värden på medlemmarna x, y och z i strukturen till de individuella variablerna x_coordinate, y_coordinate, z_coordinate respektive genom att använda syntax auto[ x_coordinate, y_coordinate, z_coordinate ] = c. Resultatet av ovanstående visas nedan:

Exempel 2: Strukturbindning i C++ för att packa upp en struktur

Följande är ett exempel på strukturbindning för att packa upp en struktur:

#include

#inkludera

använder namnutrymme std ;

struktur Studerande {

strängens namn ;

int ålder ;

} ;

int huvud ( ) {

Student s { 'Hamza' , 32 } ;

bil [ namn , ålder ] = s ;

cout << namn << ' är ' << ålder << ' år gammal.' << endl ;

lämna tillbaka 0 ;

}

I ovanstående kod har en studentstruktur två medlemmar: a namn det är en sträng och en ålder det är ett heltal. Sedan skapar vi Student-objektet och tilldelar initiala värden till var och en av dess medlemmar. Medlemmarna i s separeras sedan i variabelns namn och ålder med hjälp av strukturell bindning, och dessa värden skrivs sedan ut som i skärmdumpen nedan:

Exempel 3: Strukturbindning i C++ med modifierare

Nedan är ett exempel på strukturbindning som använder en modifierare för att uppdatera värdet på en variabel som num1 och num2:

#include

#inkludera

använder namnutrymme std ;

int huvud ( ) {

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

bil & [ nummer1 , nummer2 ] = t ;

cout << 'Värdet på num1 = ' << nummer1 << ', num2 = ' << nummer2 << ' \n ' ;

nummer1 = 30 ;

cout << 'Det ändrade värdet på num1 = ' << nummer1 << ', num2 = ' << nummer2 <<

' \n ' ;

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

cout << 'Nu är värdet på num3 = ' << nummer 3 << ', num4 = ' << nummer 4 << ' \n ' ;

lämna tillbaka 0 ;

}

I den föregående koden bygger vi en tuppel t och använder lvalue-referensen för att länka dess komponenter till num1 och num2. Vi ändrar sedan värdet på num1 till 30 och matar ut värdena num1 och num2. Bygg också en tillfällig tupel via make_tuple(100, 250) och använd en rvalue-referens för att knyta dess element till num3 och num4. Värdena på num3 och num4 skrivs sedan ut eftersom num3 och num4 är kopplade med en rvalue-referens, de kan inte användas för att ändra den temporära tupeln som bildas av make_tuple(100, 250). De kan bara läsa från den. När du kör programmet kommer följande resultat att visas på skärmen:

Slutsats

Strukturbindning är en funktion i C++ som packar upp flera värden av en struktur eller klass till individuella variabler i ett enda uttryck, vilket resulterar i mer kortfattad, läsbar och säkrare kod. Strukturbindning med hjälp av modifierare effektiviserar processen att ändra värden inom strukturerade objekt.