Struktúra kötés C++ nyelven

Struktura Kotes C Nyelven



A szerkezet-összerendelés lehetővé teszi az elemek kibontását egy struktúrából vagy osztályból, és különböző változókhoz rendelheti anélkül, hogy minden taghoz külön hozzáférne. A struktúra-összerendelés arra szolgál, hogy kiküszöbölje a manuális elemkivonás szükségességét, és javítja a kód olvashatóságát és tömörségét azáltal, hogy lehetővé teszi egy struktúra vagy osztály számos elemének egyidejű kicsomagolását különböző változókra. Ebben az oktatóanyagban megvitatjuk a működést, a szintaxist és a struktúra-összerendelés példáit a C++ nyelven.

Mi az a strukturált kötés a C++ nyelven?

A struktúra-összerendelés egy C++ szolgáltatás, amelyet a C++17-ben adtak hozzá, és amely lehetővé teszi a struktúra vagy sor egyedi változókra történő lebontását, javítva a kód tömörségét. Használható a struct tag hozzáférési szintaxisának egyszerűbbé tételére és az elírások vagy helytelen indexelés által okozott hibák csökkentésére.

Szintaxis







A szerkezetkötés szintaxisa C++-ban a következő:



auto [ var1 , var2 , ... ] = kifejezés ;

A C++ struktúra-kötés szintaxisában, ahol a „var1” és a „var2” változónevek, az „expression” pedig egy olyan kifejezés, amely egy struktúrát vagy osztályt eredményez. Automatikus kulcsszavakat használunk az automatikusan létrehozott változók deklarálására.



Módosítók

A módosítók használhatók a strukturált kötésekkel való párosításhoz. Szintaxisuk az alábbiakban található:





auto & [ a , b , c , ... ] = kifejezés ;

auto && [ a , b , c , ... ] = kifejezés ;

A deklarációban használt „&” vagy „&&” operátor határozza meg, hogy a kötés lvalue vagy rvalue hivatkozás-e. Az „&” jellel jelzett értékhivatkozás egy hivatkozást hoz létre, amely a kötési változók értékeinek megváltoztatására használható. Az értékeken a hivatkozással végrehajtott változtatások az eredeti struktúrában vagy sorban láthatók.

Ezzel szemben az „&&” által képviselt rérték hivatkozás olyan hivatkozást biztosít, amely az összerendelésben szereplő változók értékének kiolvasására korlátozódik. Hasznos átmeneti objektumokhoz vagy megsemmisítendő rértékekhez való kötéshez, mivel elkerüli az objektum másolatának elkészítését, ami memória- és időigényes lehet.



1. példa: Struktúra kötés C++ nyelven

A következő példa a C++ struktúra kötésre:

#include

névtér std használatával ;

struct kocka

{

int x ;

int és ;

int Val vel ;

} ;

int fő- ( )

{

c-kocka = { 10 , húsz , 30 } ;

auto [ x_koordináta , y_koordináta , z_koordináta ] = c ;

cout << 'X tengely:' << x_koordináta << endl ;

cout << 'Y-tengely:' << y_koordináta << endl ;

cout << 'Z tengely:' << z_koordináta << endl ;

Visszatérés 0 ;

}

A fenti példában egy struktúrakockát deklarálunk három x, y és z egész számmal. A szerkezet egy kockát mutat a térben. Létrejön egy c típusú kocka változó és inicializálja a (10,20,30) értékeket. Ebben a kódstruktúrában a kötés a struktúra x, y és z tagjainak értékeit rendeli hozzá az x_coordinate, y_coordinate, z_coordinate egyedi változókhoz az auto[ x_coordinate, y_coordinate, z_coordinate ] = c szintaxis használatával. A fentiek kimenete az alábbiakban látható:

2. példa: Struktúrakötés C++ nyelven a struktúra kicsomagolásához

Az alábbiakban egy példa látható a struktúra kicsomagolásának szerkezet-összerendelésére:

#include

#include

névtér std használatával ;

struct Diák {

karakterlánc neve ;

int kor ;

} ;

int fő- ( ) {

Diák s { 'Hamza' , 32 } ;

auto [ név , kor ] = s ;

cout << név << 'van' << kor << ' éves.' << endl ;

Visszatérés 0 ;

}

A fenti kódban a Student struktúrának két tagja van: a név ez egy karakterlánc és egy kor ez egy egész szám. Ezután létrehozzuk a Student objektumot, és kezdeti értékeket rendelünk minden tagjához. Az s tagjait ezután a változó nevére és életkorára strukturális kötés segítségével szétválasztják, majd ezeket az értékeket az alábbi képernyőképen látható módon nyomtatja ki:

3. példa: Struktúra kötés C++ nyelven módosítókkal

Az alábbiakban egy példa látható a szerkezet-összerendelésre, amely módosító segítségével frissíti a változó értékét, mint num1 és num2:

#include

#include

névtér std használatával ;

int fő- ( ) {

tuple < int , int > t { 25 , húsz } ;

auto & [ szám1 , szám2 ] = t ;

cout << 'A szám1 értéke = ' << szám1 << ', szám2 = ' << szám2 << ' \n ' ;

szám1 = 30 ;

cout << 'A szám1 megváltozott értéke = ' << szám1 << ', szám2 = ' << szám2 <<

' \n ' ;

auto && [ szám3 , szám4 ] = make_tuple ( 100 , 250 ) ;

cout << 'Most a num3 értéke = ' << szám3 << ', num4 = ' << szám4 << ' \n ' ;

Visszatérés 0 ;

}

Az előző kódban felállítunk egy t sort, és az lvalue hivatkozást használjuk annak összetevőinek a num1-hez és a num2-hez való kapcsolásához. Ezután megváltoztatjuk a num1 értékét 30-ra, és kiadjuk a num1 és num2 értékeket. Készítsen egy ideiglenes leírót is a make_tuple(100, 250) segítségével, és egy rvaluta hivatkozással kösse össze elemeit a num3 és a num4 függvényekkel. A num3 és a num4 értékei ezután kinyomtatásra kerülnek, mivel a num3 és a num4 egy rvalue-referenciával párosulnak, így nem használhatók a make_tuple(100, 250) által alkotott ideiglenes leíró megváltoztatására. Csak olvasni képesek belőle. A program végrehajtásakor a következő eredmény jelenik meg a képernyőn:

Következtetés

A struktúra-összerendelés a C++ olyan funkciója, amely egy struktúra vagy osztály több értékét egyedi változókba bontja egyetlen kifejezésben, így tömörebb, olvashatóbb és biztonságosabb kódot eredményez. A módosítókat használó szerkezet-összerendelés leegyszerűsíti a strukturált objektumon belüli értékek megváltoztatásának folyamatát.