Appearance
Struct
Caz: Am de creat un program unde memorez înălțimea și anul nașterii pentru elevii unei clase cu n copii.
cpp
Soluția 1: Creez un vector cu n elemente de tip double pt înălțime și un alt vector de tip int pt anul nașterii. => Dacă trebuie sa memorez k proprietăți pt cei n elevi ⇔ k vectori diferiți ; de asemenea, dacă șterg/inserez un elev, ștergerea/inserarea trebuie făcută în fiecare din cei k vectori.Solutia 2: Creez un tip de date care înglobează toate proprietățile unui elev. Din moment ce acum am creat un astfel de tip, e suficient sa creez un singur vector (va fi un vector de elevi - fiecare element va fi alcătuit din cele k proprietăți).
Obs: Proprietățile se vor numi câmpuri (eng. fields). ( La fel cum la un formular găsim exprimarea “Completați câmpurile de mai jos...”).
O structură (sau “un struct”) este un mod de a grupa mai multe date sub o singura denumire.
Sintaxa definire Struct:
Exemplu de definire a unei structuri:
cpp
Observație : Tipurile de date predefinite ale limbajului se numesc tipuri primitive (int, float, double, long long, short, bool, etc.)
Cum declar o variabila de tip struct ?
Sintaxă : denumireStruct numeVariabila;Exemplu :
Cum accesez valoarea unui câmp ?
Sintaxa : numeVariabila.numeCâmp
Obs#1 : Pot avea un câmp de tip Buletin în struct-ul Elev doar dacă struct-ul Buletin a fost declarat înaintea (mai sus de) structului Elev.
Contraex:
cpp
Obs#2 : Pot declara variabile de tip struct între “}” și ”;”.Ex:
cpp
// ⇔Obs#3 : Pot declara și structuri fără nume (singurul mod de a declara variabile de acel tip fiind ca în Obs#2). Aceste structuri fără nume se numesc structuri anonime.
Ex :
Atribuirea pentru structuri
Efect : Se face atribuirea pentru fiecare câmp.
⇔
Swap între 2 structuri
Obs: Pot face swap dintre 2 variabile ce sunt structuri doar dacă sunt de același tip !!! (ex. pot face swap(a, b); dacă a și b sunt de tip Elev, dar nu pot face swap-ul cand de ex. a este de tip Elev și b este de tip Buletin).
Efect : se face câmp cu câmp (în același stil ca la atribuire).
Ex
cpp
// swap(ionel, Maria);
Andra = ionel;
ionel = Maria;
Maria = Andra;