Strukturní vazba v C++

Strukturni Vazba V C



Vazba struktury vám umožňuje extrahovat prvky ze struktury nebo třídy a přiřadit je k různým proměnným, aniž byste měli přístup ke každému členu zvlášť. Vazba struktury se používá k odstranění potřeby ruční extrakce prvků a zlepšuje čitelnost a stručnost kódu tím, že umožňuje současné rozbalení mnoha prvků struktury nebo třídy do odlišných proměnných. V tomto tutoriálu probereme práci, syntaxi a příklady vazby struktury v C++.

Co je strukturovaná vazba v C++?

Vazba struktury je funkce jazyka C++, která byla přidána do jazyka C++17 a umožňuje také rozklad struktury nebo n-tice na jednotlivé proměnné, čímž se zlepšuje stručnost kódu. Lze jej použít ke zjednodušení syntaxe přístupu členů struct a snížení možnosti chyb způsobených překlepy nebo nesprávným indexováním.

Syntax







Syntaxe vazby struktury v C++ je následující:



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

V syntaxi pro vazbu struktury v C++, kde „var1“ a „var2“ jsou názvy proměnných a „výraz“ je výraz, který dává strukturu nebo třídu. K deklaraci proměnných, které se automaticky vytvářejí, používáme klíčová slova auto.



Modifikátory

Modifikátory lze použít při párování se strukturovanými vazbami. Jejich syntaxe je uvedena níže:





auto & [ A , b , C , ... ] = výraz ;

auto && [ A , b , C , ... ] = výraz ;

Operátor „&“ nebo „&&“ použitý v deklaraci definuje, zda je vazba odkazem lvalue nebo rvalue. Odkaz lvalue reprezentovaný „&“ vytváří odkaz, který lze použít ke změně hodnot vazebných proměnných. Změny hodnot provedené pomocí odkazu budou vidět v původní struktuře nebo n-tice.

Reference rvalue reprezentovaná „&&“ na druhé straně poskytuje odkaz, který je omezen na použití pro čtení hodnoty proměnných zahrnutých ve vazbě. Je to užitečné pro vazbu na přechodné objekty nebo hodnoty r, které je třeba zničit, protože se vyhne vytváření repliky objektu, což může být náročné na paměť a čas.



Příklad 1: Vazba struktury v C++

Následuje příklad vazby struktury C++:

#include

pomocí jmenného prostoru std ;

strukturovat krychle

{

int X ;

int a ;

int S ;

} ;

int hlavní ( )

{

c-kostka = { 10 , dvacet , 30 } ;

auto [ x_coordinate , souřadnice_y , z_souřadnice ] = C ;

cout << 'osa X:' << x_coordinate << endl ;

cout << 'osa Y:' << souřadnice_y << endl ;

cout << 'osa Z:' << z_souřadnice << endl ;

vrátit se 0 ;

}

Ve výše uvedeném příkladu deklarujeme strukturní krychli se třemi celými čísly x, y a z. Struktura zobrazuje krychli v prostoru. Vytvoří se proměnná c typu cube a inicializuje se hodnotami (10,20,30). V této struktuře kódu vazba přiřazuje hodnoty členů x, y a z struct jednotlivým proměnným x_coordinate, y_coordinate, z_coordinate pomocí syntaxe auto[ x_coordinate, y_coordinate, z_coordinate ] = c. Výstup z výše uvedeného je uveden níže:

Příklad 2: Vazba struktury v C++ pro rozbalení struktury

Následuje příklad vazby struktury při rozbalení struktury:

#include

#include <řetězec>

pomocí jmenného prostoru std ;

strukturovat Student {

název řetězce ;

int stáří ;

} ;

int hlavní ( ) {

Student s { 'Hamza' , 32 } ;

auto [ název , stáří ] = s ;

cout << název << ' je ' << stáří << 'let starý.' << endl ;

vrátit se 0 ;

}

Ve výše uvedeném kódu má struktura Student dva členy: a název to je struna a an stáří to je celé číslo. Poté vytvoříme objekt Student a každému z jeho členů přiřadíme počáteční hodnoty. Členy s jsou pak rozděleny do názvu a věku proměnné pomocí strukturální vazby a tyto hodnoty jsou pak vytištěny jako na obrázku níže:

Příklad 3: Vazba struktury v C++ s modifikátory

Níže je uveden příklad vazby struktury, která využívá modifikátor k aktualizaci hodnoty proměnné jako num1 a num2:

#include

#include

pomocí jmenného prostoru std ;

int hlavní ( ) {

tuple < int , int > t { 25 , dvacet } ;

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

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

číslo1 = 30 ;

cout << 'Změněná hodnota num1 = ' << číslo1 << ', číslo2 = ' << číslo2 <<

' \n ' ;

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

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

vrátit se 0 ;

}

V předchozím kódu vytvoříme n-tici t a použijeme odkaz lvalue k propojení jejích komponent s num1 a num2. Potom změníme hodnotu num1 na 30 a vypíšeme hodnoty num1 a num2. Vytvořte také dočasnou n-tici pomocí make_tuple(100, 250) a použijte odkaz rvalue k propojení jejích prvků s num3 a num4. Hodnoty num3 a num4 se pak vytisknou, protože num3 a num4 jsou spojeny s odkazem rvalue, nelze je použít ke změně dočasné n-tice vytvořené pomocí make_tuple(100, 250). Jsou schopni z něj pouze číst. Po spuštění programu se na obrazovce zobrazí následující výsledek:

Závěr

Vazba struktury je funkce v C++, která rozbalí více hodnot struktury nebo třídy do jednotlivých proměnných v jediném výrazu, což má za následek stručnější, čitelnější a bezpečnější kód. Vazba struktury pomocí modifikátorů zefektivňuje proces změny hodnot ve strukturovaných objektech.