Väzba štruktúry v C++

Vazba Struktury V C



Väzba štruktúry vám umožňuje extrahovať prvky zo štruktúry alebo triedy a priradiť ich k rôznym premenným bez toho, aby ste mali prístup ku každému členovi samostatne. Väzba štruktúry sa používa na elimináciu potreby ručnej extrakcie prvkov a zlepšuje čitateľnosť a stručnosť kódu tým, že umožňuje súčasné rozbalenie mnohých prvkov štruktúry alebo triedy do odlišných premenných. V tomto návode budeme diskutovať o práci, syntaxi a príkladoch viazania štruktúry v C++.

Čo je štruktúrovaná väzba v C++?

Structure binding je funkcia C++, ktorá bola pridaná v C++17, ktorá tiež umožňuje dekompozíciu štruktúry alebo n-tice na jednotlivé premenné, čím sa zlepšuje stručnosť kódu. Môže sa použiť na zjednodušenie syntaxe prístupu členov struct a zníženie možnosti chýb spôsobených preklepmi alebo nesprávnym indexovaním.

Syntax







Syntax väzby štruktúry v C++ je nasledovná:



auto [ var1 , var2 , ... ] = výraz ;

V syntaxi väzby štruktúry v C++, kde „var1“ a „var2“ sú názvy premenných a „výraz“ je výraz, ktorý dáva štruktúru alebo triedu. Automatické kľúčové slová používame na deklarovanie premenných, ktoré sa automaticky vytvárajú.



Modifikátory

Modifikátory je možné použiť v párovaní so štruktúrovanými väzbami. Ich syntax je uvedená nižšie:





auto & [ a , b , c , ... ] = výraz ;

auto && [ a , b , c , ... ] = výraz ;

Operátor „&“ alebo „&&“ použitý v deklarácii definuje, či je väzba referenciou lvalue alebo rvalue. Referencia lvalue reprezentovaná „&“ vytvára referenciu, ktorá sa môže použiť na zmenu hodnôt väzbových premenných. Zmeny hodnôt vykonané pomocou referencie sa prejavia v pôvodnej štruktúre alebo n-tici.

Referencia rvalue reprezentovaná „&&“ na opačnej strane poskytuje referenciu, ktorá je obmedzená na použitie na čítanie hodnoty premenných zahrnutých vo väzbe. Je praktický na viazanie na prechodné objekty alebo rhodnoty, ktoré je potrebné zničiť, pretože sa vyhýba vytváraniu repliky objektu, čo môže byť náročné na pamäť a čas.



Príklad 1: Väzba štruktúry v C++

Nasleduje príklad väzby štruktúry C++:

#include

pomocou menného priestoru std ;

štrukturovať kocka

{

int X ;

int a ;

int s ;

} ;

int Hlavná ( )

{

c-kocka = { 10 , dvadsať , 30 } ;

auto [ x_súradnica , súradnica y , z_súradnica ] = c ;

cout << 'Os X: ' << x_súradnica << endl ;

cout << 'Os Y: ' << súradnica y << endl ;

cout << 'os Z:' << z_súradnica << endl ;

vrátiť 0 ;

}

Vo vyššie uvedenom príklade deklarujeme štruktúrnu kocku s tromi celými číslami x, y a z. Štruktúra zobrazuje kocku v priestore. Vytvorí sa premenná c typu kocka a inicializuje sa hodnotami (10,20,30). V tejto štruktúre kódu väzba priraďuje hodnoty členov x, y a z struct jednotlivým premenným x_coordinate, y_coordinate, z_coordinate v tomto poradí pomocou syntaxe auto[ x_coordinate, y_coordinate, z_coordinate ] = c. Výstup z vyššie uvedeného je uvedený nižšie:

Príklad 2: Väzba štruktúry v C++ na rozbalenie štruktúry

Nasleduje príklad väzby štruktúry pri rozbaľovaní štruktúry:

#include

#include

pomocou menného priestoru std ;

štrukturovať Študent {

názov reťazca ;

int Vek ;

} ;

int Hlavná ( ) {

Študentská s { 'Hamza' , 32 } ;

auto [ názov , Vek ] = s ;

cout << názov << ' je ' << Vek << ' rokov starý.' << endl ;

vrátiť 0 ;

}

Vo vyššie uvedenom kóde má študentská štruktúra dvoch členov: a názov to je reťazec a Vek to je celé číslo. Potom vytvoríme objekt Študent a každému z jeho členov priradíme počiatočné hodnoty. Členovia s sa potom rozdelia na názov a vek premennej pomocou štrukturálnej väzby a tieto hodnoty sa potom vytlačia ako na obrázku nižšie:

Príklad 3: Väzba štruktúry v C++ s modifikátormi

Nižšie je uvedený príklad väzby štruktúry, ktorá využíva modifikátor na aktualizáciu hodnoty premennej ako num1 a num2:

#include

#include

pomocou menného priestoru std ;

int Hlavná ( ) {

násobný < int , int > t { 25 , dvadsať } ;

auto & [ číslo1 , číslo2 ] = t ;

cout << 'Hodnota num1 = ' << číslo1 << ', číslo2 = ' << číslo2 << ' \n ' ;

číslo1 = 30 ;

cout << 'Zmenená hodnota num1 = ' << číslo1 << ', číslo2 = ' << číslo2 <<

' \n ' ;

auto && [ číslo3 , číslo4 ] = make_tuple ( 100 , 250 ) ;

cout << 'Teraz hodnota num3 = ' << číslo3 << ', číslo4 = ' << číslo4 << ' \n ' ;

vrátiť 0 ;

}

V predchádzajúcom kóde vytvoríme n-ticu t a použijeme odkaz lvalue na prepojenie jej komponentov s num1 a num2. Potom zmeníme hodnotu num1 na 30 a vydáme hodnoty num1 a num2. Tiež vytvorte dočasnú n-tku cez make_tuple(100, 250) a použite referenciu rvalue na spojenie jej prvkov s num3 a num4. Hodnoty num3 a num4 sa potom vytlačia, pretože num3 a num4 sú spojené s referenciou rvalue, nemožno ich použiť na zmenu dočasnej n-tice vytvorenej pomocou make_tuple(100, 250). Sú schopní z nej iba čítať. Keď spustíte program, na obrazovke sa zobrazí nasledujúci výsledok:

Záver

Väzba štruktúry je funkcia v C++, ktorá rozbaľuje viacero hodnôt štruktúry alebo triedy do jednotlivých premenných v jedinom výraze, výsledkom čoho je stručnejší, čitateľnejší a bezpečnejší kód. Väzba štruktúry pomocou modifikátorov zefektívňuje proces zmeny hodnôt v rámci štruktúrovaných objektov.