De ce contează?
Pentru drumul de la casă la școală alegi bicicleta; ca să muți o mobilă chemi camionul; pentru o călătorie peste țară iei trenul. Niciun vehicul nu e „cel mai bun" în general — fiecare e cel mai bun pentru un anumit drum. La fel stau lucrurile cu structurile STL: ai învățat deja cum funcționează fiecare; acum înveți s-o alegi pe cea potrivită pentru problema din față.
Ideea-cheie
Ai în trusă o grămadă de containere: vector, stack, queue, deque, set,
map, unordered_set, unordered_map, priority_queue, list. La concurs nu
contează care e „cel mai tare", ci care face operația de care ai tu nevoie cel
mai des în timp mic. O structură excelentă pentru o operație poate fi catastrofală
pentru alta: vector e fulgerător la acces prin index, dar lent la inserția în
mijloc; set îți ține datele sortate, dar e mai lent decât un unordered_set când
nu ai nevoie de ordine.
Nu alegi structura după cum „sună" sau după ce ai folosit ultima dată. O alegi după operația dominantă — operația pe care o repeți de cele mai multe ori — și după complexitatea acelei operații pe structura respectivă. Dacă faci de un milion de ori „caut dacă x există", contează doar cât costă o căutare; restul e zgomot.