Vector (STL)

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare

Containerul vector este un container de elemente omogene similare matricei și parte a bibliotecii standard C ++ , cu funcția de a permite accesul la conținutul său într-un mod rapid și optimizat folosind indexuri sau printr-un iterator. Definiția acestei clase se găsește în fișierul header <vector> al spațiului de nume std.

Reprezintă în esență o versiune evoluată a matricei c . De fapt, spre deosebire de acesta, nu are o capacitate maximă predeterminată în timpul compilării, dar se extinde în timpul execuției după cum este necesar.

Dimensiune și capacitate

Mărimea vectorului și capacitatea acestuia nu reprezintă același lucru: în timp ce dimensiunea este numărul de elemente care fac parte din vector, capacitatea este numărul maxim de elemente care pot fi stocate. Prin inserarea unui element nou în vector care a atins capacitatea maximă, va exista o creștere a capacității și o redimensionare a zonei de memorie (contiguă) adecvată pentru conținerea vectorului. Prin urmare, este posibil în această fază ca vectorul să fie de fapt mutat într-o altă zonă de memorie și cu acesta elementele conținute. Pentru a evita această operațiune potențial foarte costisitoare, puteți:

  • dacă se cunoaște din timp, construiți imediat vectorul cu o capacitate egală cu cea estimată (folosind metoda de rezervă)
  • stocați în vector nu obiecte, ci indicatori către ele

Operații pe elemente

Accesul la elemente este aleatoriu, iar operațiunile de inserare și eliminare în coadă sunt deosebit de eficiente. Cu toate acestea, eliminarea unui element din mijlocul vectorului implică deplasarea tuturor elementelor ulterioare, din acest motiv, dacă este necesar să efectuați adesea operațiuni de acest tip puteți:

  • utilizați un container mai adecvat, cum ar fi lista
  • stocați în vector nu obiectele reale, ci indicatori către ele

Iată un exemplu de construire și derulare a unui vector:

 std :: vector <int> v;
v.push_back (1);
v.push_back (2);
v.push_back (5);
for (int i = 0; i <v.size (); i ++)
 std :: cout << v [i] << std :: endl;
Informatică Portal IT : accesați intrările Wikipedia care se ocupă cu IT