De ce contează?
Gândește-te la o etichetă de pe un raft de magazin: pe ea sunt scrise două lucruri legate împreună — numele produsului și prețul lui. Nu are sens să le ții separat; ele formează o singură unitate, „pâine — 5 lei". În C++, un pair este exact această etichetă: un obiect mic care leagă două valori într-unul singur, ca să le poți căra, returna și compara împreună.
Ce este
Un pair este un obiect care ține două valori, posibil de tipuri diferite, sub un singur nume. Cele două valori se numesc .first (prima) și .second (a doua).
De ce ne trebuie? Pentru că deseori două informații merg mereu împreună și nu vrei să le ții în doi vectori paraleli care se pot dezalinia. Un punct în plan este o pereche (x, y). Un produs este o pereche (nume, preț). O funcție care vrea să întoarcă două lucruri (de exemplu minimul ȘI poziția lui) le poate împacheta într-un singur pair și le returnează deodată.
Tipul se scrie cu cele două tipuri componente între paranteze unghiulare, de exemplu pair<int,int> (două numere) sau pair<string,int> (un text și un număr).
Cheia care face pair cu adevărat util: el se compară lexicografic, adică întâi după .first, și abia dacă .first sunt egale se uită la .second. Exact ca la dicționar: compari prima literă; doar dacă e aceeași treci la a doua. Deci (3, 9) este mai mic decat (5, 1) pentru ca 3 < 5 — a doua valoare nici nu mai contează. Dar (3, 2) este mai mic decat (3, 8), pentru ca first sunt egale și decide second.