Struktūrų įrišimas C++

Strukturu Irisimas C



Struktūros susiejimas leidžia išskirti elementus iš struktūros ar klasės ir priskirti juos skirtingiems kintamiesiems, neturint prieigos prie kiekvieno nario atskirai. Struktūros susiejimas naudojamas siekiant pašalinti neautomatinio elementų ištraukimo poreikį ir pagerina kodo skaitomumą bei glaustumą, nes leidžia vienu metu išpakuoti daugybę struktūros ar klasės elementų į skirtingus kintamuosius. Šioje pamokoje aptarsime darbą, sintaksę ir struktūros surišimo pavyzdžius C++.

Kas yra struktūrinis įrišimas C++?

Struktūros susiejimas yra C++ funkcija, kuri buvo pridėta C++17, kuri taip pat leidžia skaidyti struktūrą arba eilutę į atskirus kintamuosius, pagerinant kodo glaustumą. Jis gali būti naudojamas siekiant supaprastinti struktūros nario prieigos sintaksę ir sumažinti klaidų, kurias sukelia rašybos klaidos arba neteisingas indeksavimas, galimybę.

Sintaksė







C++ struktūros surišimo sintaksė yra tokia:



automatinis [ var1 , var2 , ... ] = išraiška ;

Struktūros susiejimo sintaksėje C++, kur „var1“ ir „var2“ yra kintamųjų pavadinimai, o „expression“ yra išraiška, kuri suteikia struktūrą arba klasę. Mes naudojame automatinius raktinius žodžius, kad deklaruotume automatiškai sukuriamus kintamuosius.



Modifikatoriai

Modifikatoriai gali būti naudojami poruojant su struktūriniais apkaustais. Jų sintaksė paminėta žemiau:





automatinis & [ a , b , c , ... ] = išraiška ;

automatinis && [ a , b , c , ... ] = išraiška ;

Deklaracijoje naudojamas operatorius „&“ arba „&&“ apibrėžia, ar įrišimas yra lvalue ar rvalue nuoroda. Vertės nuoroda, pavaizduota „&“, sukuria nuorodą, kurią galima naudoti norint pakeisti privalomųjų kintamųjų reikšmes. Vertybių pakeitimai, atlikti naudojant nuorodą, bus matomi pradinėje struktūroje arba eilutėje.

Kita vertus, rvalue nuoroda, pavaizduota „&&“, yra nuoroda, kuri apsiriboja kintamųjų, įtrauktų į susiejimą, vertei nuskaityti. Tai patogu susieti su trumpalaikiais objektais ar vertybėmis, kurias reikia sunaikinti, nes išvengiama objekto kopijos, o tai gali užtrukti atminties ir laiko.



1 pavyzdys: Struktūros įrišimas C++

Toliau pateikiamas C++ struktūros surišimo pavyzdys:

#include

naudojant vardų sritį std ;

struktūra kubas

{

tarpt x ;

tarpt ir ;

tarpt Su ;

} ;

tarpt pagrindinis ( )

{

c-kubas = { 10 , dvidešimt , 30 } ;

automatinis [ x_koordinatė , y_koordinatė , z_koordinatė ] = c ;

cout << 'X ašis:' << x_koordinatė << endl ;

cout << 'Y ašis:' << y_koordinatė << endl ;

cout << 'Z ašis:' << z_koordinatė << endl ;

grąžinti 0 ;

}

Aukščiau pateiktame pavyzdyje deklaruojame struktūros kubą su trimis sveikaisiais skaičiais x, y ir z. Struktūra rodo kubą erdvėje. Sukuriamas c tipo kubo kintamasis ir inicijuojamas reikšmėmis (10,20,30). Šioje kodo struktūroje susiejimas priskiria struktūros narių x, y ir z reikšmes atskiriems kintamiesiems x_koordinatė, y_koordinatė, z_koordinatė, naudodama sintaksę auto[ x_coordinate, y_coordinate, z_coordinate ] = c. Aukščiau pateiktų dalykų išvestis parodyta žemiau:

2 pavyzdys: Struktūros įrišimas C++, norint išpakuoti struktūrą

Toliau pateikiamas struktūros susiejimo pavyzdys išpakuojant struktūrą:

#include

#include

naudojant vardų sritį std ;

struktūra Studentas {

eilutės pavadinimas ;

tarpt amžiaus ;

} ;

tarpt pagrindinis ( ) {

Studentas s { 'Hamza' , 32 } ;

automatinis [ vardas , amžiaus ] = s ;

cout << vardas << 'yra' << amžiaus << ' metų.' << endl ;

grąžinti 0 ;

}

Aukščiau pateiktame kode Mokinio struktūra turi du narius: a vardas tai yra eilutė ir an amžiaus tai yra sveikasis skaičius. Tada sukuriame Studento objektą ir kiekvienam jo nariui priskiriame pradines reikšmes. Tada s nariai išskirstomi į kintamojo pavadinimą ir amžių, naudojant struktūrinį susiejimą, ir šios reikšmės išspausdinamos, kaip parodyta toliau pateiktoje ekrano kopijoje:

3 pavyzdys: Struktūros surišimas C++ su modifikatoriais

Žemiau pateikiamas struktūros susiejimo pavyzdys, kuriame naudojamas modifikatorius, kad būtų atnaujinta kintamojo kaip num1 ir num2 reikšmė:

#include

#include

naudojant vardų sritį std ;

tarpt pagrindinis ( ) {

kortele < tarpt , tarpt > t { 25 , dvidešimt } ;

automatinis & [ skaičius1 , skaičius2 ] = t ;

cout << 'Num1 reikšmė = ' << skaičius1 << ', skaičius2 = ' << skaičius2 << ' \n ' ;

skaičius1 = 30 ;

cout << 'Pakeista num1 reikšmė = ' << skaičius1 << ', skaičius2 = ' << skaičius2 <<

' \n ' ;

automatinis && [ numeris3 , skaičius4 ] = make_tuple ( 100 , 250 ) ;

cout << 'Dabar num3 reikšmė = ' << numeris3 << ', skaičius4 = ' << skaičius4 << ' \n ' ;

grąžinti 0 ;

}

Ankstesniame kode sukuriame seką t ir naudojame nuorodą lvvalue, kad susietume jos komponentus su num1 ir num2. Tada pakeičiame num1 reikšmę į 30 ir išvedame num1 ir num2 reikšmes. Taip pat sukurkite laikiną seką naudodami make_tuple(100, 250) ir naudokite rvalue nuorodą, kad susietumėte jos elementus su num3 ir num4. Tada išspausdinamos num3 ir num4 reikšmės, nes skaičius3 ir skaičius4 yra susieti su rreikšmės nuoroda, jų negalima naudoti norint pakeisti laikiną seką, kurią sudaro make_tuple(100, 250). Jie gali tik iš to skaityti. Kai vykdote programą, ekrane bus rodomas toks rezultatas:

Išvada

Struktūros susiejimas yra C++ funkcija, kuri išpakuoja kelias struktūros ar klasės reikšmes į atskirus kintamuosius vienoje išraiškoje, todėl kodas yra glaustesnis, skaitomesnis ir saugesnis. Struktūros susiejimas naudojant modifikatorius supaprastina struktūrinių objektų verčių keitimo procesą.