Struktuuride sidumine C++ keeles

Struktuuride Sidumine C Keeles



Struktuuri sidumine võimaldab teil eraldada elemendid struktuurist või klassist ja määrata need erinevatele muutujatele, ilma et teil oleks juurdepääsu igale liikmele eraldi. Struktuuri sidumist kasutatakse selleks, et kõrvaldada vajadus käsitsi elementide ekstraheerimiseks ning see parandab koodi loetavust ja kokkuvõtlikkust, võimaldades samaaegselt lahti pakkida mitmed struktuuri või klassi elemendid erinevateks muutujateks. Selles õpetuses käsitleme tööd, süntaksit ja näiteid struktuuri sidumisest C++ keeles.

Mis on C++ struktureeritud sidumine?

Struktuuri sidumine on C++ funktsioon, mis lisati C++17-sse, mis võimaldab ka struktuuri või korteeži üksikuteks muutujateks lagundada, parandades koodi kokkuvõtlikkust. Seda saab kasutada struktuuriliikmete juurdepääsu süntaksi lihtsustamiseks ja kirjavigade või vale indekseerimise põhjustatud vigade võimaluse vähendamiseks.

Süntaks







Struktuuri sidumise süntaks C++ keeles on järgmine:



auto [ var1 , var2 , ... ] = väljendus ;

Struktuuri sidumise süntaksis C++ keeles, kus “var1” ja “var2” on muutujate nimed ning “expression” on avaldis, mis annab struktuuri või klassi. Kasutame automaatselt loodud muutujate deklareerimiseks automaatseid märksõnu.



Modifikaatorid

Modifikaatoreid saab kasutada sidumisel struktureeritud köitega. Nende süntaksit mainitakse allpool:





auto & [ a , b , c , ... ] = väljendus ;

auto && [ a , b , c , ... ] = väljendus ;

Deklaratsioonis kasutatav operaator '&' või '&&' määrab, kas sidumine on lvalue või rvalue viide. Väärtuse viide, mida tähistab '&', loob viite, mida saab kasutada siduvate muutujate väärtuste muutmiseks. Viite abil tehtud väärtuste muudatused on näha algses struktuuris või korteis.

Seevastu rvalue viide, mida tähistab '&&', annab viite, mida kasutatakse ainult sidumisse kaasatud muutujate väärtuste lugemiseks. See on mugav sidumiseks mööduvate objektide või väärtustega, mis tuleb hävitada, kuna see väldib objektist koopia tegemist, see võib olla mälu- ja aeganõudev.



Näide 1: Struktuuri sidumine C++ keeles

Järgmine on C++ struktuuri sidumise näide:

#include

kasutades nimeruumi std ;

struktuur kuubik

{

int x ;

int ja ;

int Koos ;

} ;

int peamine ( )

{

c-kuubik = { 10 , kakskümmend , 30 } ;

auto [ x_koordinaat , y_koordinaat , z_koordinaat ] = c ;

cout << 'X-telg:' << x_koordinaat << endl ;

cout << 'Y-telg:' << y_koordinaat << endl ;

cout << 'Z-telg:' << z_koordinaat << endl ;

tagasi 0 ;

}

Ülaltoodud näites deklareerime struktuuri kuubiku kolme täisarvuga x, y ja z. Struktuur näitab ruumis kuubikut. Luuakse muutuja c tüüpi kuubik ja lähtestatakse väärtustega (10,20,30). Selles koodistruktuuris määrab sidumine üksikutele muutujatele x_coordinate, y_coordinate, z_coordinate struktuuri liikmete x, y ja z väärtused, kasutades süntaksit auto[x_coordinate, y_coordinate, z_coordinate ] = c. Ülaltoodud väljund on näidatud allpool:

Näide 2: Struktuuri sidumine C++ keeles struktuuri lahtipakkimiseks

Järgmine on näide struktuuri sidumisest struktuuri lahtipakkimisel:

#include

#include

kasutades nimeruumi std ;

struktuur Üliõpilane {

stringi nimi ;

int vanus ;

} ;

int peamine ( ) {

Õpilane s { 'Hamza' , 32 } ;

auto [ nimi , vanus ] = s ;

cout << nimi << ' on ' << vanus << ' aastat vana.' << endl ;

tagasi 0 ;

}

Ülaltoodud koodis on õpilasstruktuuril kaks liiget: a nimi see on string ja an vanus see on täisarv. Seejärel loome õpilase objekti ja määrame selle igale liikmele algväärtused. Seejärel jagatakse s-i liikmed struktuurse sidumise abil muutuja nimeks ja vanuseks ning need väärtused prinditakse seejärel nagu alloleval ekraanipildil:

Näide 3: Struktuuri sidumine C++-s koos modifikaatoritega

Allpool on näide struktuuri sidumisest, mis kasutab modifikaatorit, et värskendada muutuja väärtust num1 ja num2:

#include

#include

kasutades nimeruumi std ;

int peamine ( ) {

mitmekordne < int , int > t { 25 , kakskümmend } ;

auto & [ number1 , number2 ] = t ;

cout << 'Arv1 väärtus =' << number1 << ', number2 = ' << number2 << ' \n ' ;

number1 = 30 ;

cout << 'Num1 muudetud väärtus = ' << number1 << ', number2 = ' << number2 <<

' \n ' ;

auto && [ number3 , number4 ] = make_tuple ( 100 , 250 ) ;

cout << 'Nüüd väärtus number3 = ' << number3 << ', number4 = ' << number4 << ' \n ' ;

tagasi 0 ;

}

Eelmises koodis koostame korteeži t ja kasutame lvvalue viidet, et siduda selle komponendid numbritega num1 ja num2. Seejärel muudame num1 väärtuse 30-ks ja väljastame num1 ja num2 väärtused. Samuti looge ajutine korteež läbi make_tuple(100, 250) ja kasutage rvalue viidet, et siduda selle elemendid numbritega num3 ja num4. Seejärel prinditakse väärtused num3 ja num4, kuna num3 ja num4 on ühendatud rvalue viitega, ei saa neid kasutada ajutise korteeži muutmiseks, mille moodustab make_tuple(100, 250). Nad on võimelised ainult sellest lugema. Programmi käivitamisel kuvatakse ekraanil järgmine tulemus:

Järeldus

Struktuuri sidumine on C++ funktsioon, mis pakib ühe avaldisega lahti struktuuri või klassi mitu väärtust üksikuteks muutujateks, mille tulemuseks on ülevaatlikum, loetavam ja turvalisem kood. Struktuuri sidumine modifikaatorite abil lihtsustab struktureeritud objektide väärtuste muutmise protsessi.