De ce contează?
Gândește-te la catalogul clasei. Pe fiecare rând stă un elev cu toate datele lui lipite: numele, nota la mate, nota la română. Nimeni nu ține numele pe o foaie și notele pe alta — ar fi un coșmar să le potrivești când muți rândurile. Un vector de structuri este exact acest catalog: fiecare rând e un elev întreg, cu toate câmpurile lui la un loc, iar când rearanjezi rândurile, fiecare elev își ia datele cu el.
Ce este
Un vector de structuri este un șir de elemente în care fiecare element nu e un simplu număr, ci o structură — un grup de câmpuri legate între ele (de exemplu un Elev cu nume și nota).
Alternativa naivă ar fi vectorii paraleli: un vector nume[] și un vector separat nota[], în care „al treilea nume” și „a treia notă” se potrivesc doar pentru că stau pe aceeași poziție. Problema apare imediat ce muți elementele — de exemplu când sortezi după notă: dacă schimbi două note între ele dar uiți să schimbi și numele corespunzătoare, numele și notele se desincronizează și catalogul devine greșit.
Cu un vector de structuri, fiecare element este o cutie care ține împreună toate câmpurile elevului. Când muți elementul, muți cutia întreagă — numele călătorește lipit de nota lui.
Un vector de structuri ține împreună câmpurile fiecărui element. Când rearanjezi elementele (sortare, swap), câmpurile se mută împreună automat — nu se pot desincroniza, așa cum se întâmplă la doi vectori paraleli mutați separat.