logo

Vector în C++ STL

Vectorii sunt la fel ca și matricele dinamice, având capacitatea de a se redimensiona automat atunci când un element este inserat sau șters, stocarea lor fiind gestionată automat de container. Elementele vectoriale sunt plasate în stocare contiguă, astfel încât să poată fi accesate și traversate folosind iteratoare. În vectori, datele sunt inserate la sfârșit. Inserarea la sfârșit necesită timp diferențial, deoarece uneori matricea poate fi nevoie să fie extinsă. Eliminarea ultimului element durează doar timp constant, deoarece nu are loc nicio redimensionare. Inserarea și ștergerea la început sau la mijloc este liniară în timp.

Ce este std::vector în C++?

std::vector în C++ este șablonul de clasă care conține containerul vectorial și funcțiile sale membre. Este definit în interiorul fișier antet. Funcțiile membre ale clasei std::vector oferă diverse funcționalități containerelor vectoriale.



Sintaxă pentru declararea vectorului în C++

  std::vector   vectorName;>

unde tipul de date este tipul de date al fiecărui element al vectorului. Puteți elimina std:: dacă ați folosit deja spațiul de nume std.

Inițializarea Vectorului în C++

Putem inițializa un vector în următoarele moduri:

1. Inițializarea utilizând Lista

Această inițializare se face cu o declarație. Aici, trecem lista de elemente constructorului vectorial pentru a crea un vector cu elementele specificate.



  vector   name({   value1, value2, value3 ....  });>

2. Inițializare Cu o singură valoare

Această inițializare se face și cu declarație. Aici, specificăm dimensiunea vectorului și apoi inițializam fiecare element al vectorului cu valoarea.

  vector   name(size, value);>

3. Inițializare dintr-un alt vector

Această inițializare este folosită pentru a crea un vector care este o copie exactă a lui other_vec.

  vector   name(other_vec);>

Unele funcții membre utilizate în mod obișnuit ale clasei std::vector sunt scrise mai jos:



Iteratori

  1. ÎNCEPE() – Returnează un iterator care indică primul element din vector
  2. Sfârşit() – Returnează un iterator care indică elementul teoretic care urmează ultimul element din vector
  3. rbegin() – Returnează un iterator invers care indică ultimul element din vector (început invers). Se deplasează de la ultimul la primul element
  4. face() – Returnează un iterator invers care indică elementul teoretic care precede primul element din vector (considerat ca capăt invers)
  5. cbegin() – Returnează un iterator constant care indică primul element din vector.
  6. câțiva() – Returnează un iterator constant care indică elementul teoretic care urmează ultimul element din vector.
  7. crbegin() – Returnează un iterator invers constant care indică ultimul element din vector (început invers). Se deplasează de la ultimul la primul element
  8. crend() – Returnează un iterator invers constant care indică elementul teoretic care precede primul element din vector (considerat ca capăt invers)

C++




// C++ program to illustrate the> // iterators in vector> #include> #include> > using> namespace> std;> > int> main()> {> >vector<>int>>g1;>>> >for> (>int> i = 1; i <= 5; i++)> >g1.push_back(i);> > >cout <<>'Output of begin and end: '>;> >for> (>auto> i = g1.begin(); i != g1.end(); ++i)> >cout << *i <<>' '>;> > >cout <<>' Output of cbegin and cend: '>;> >for> (>auto> i = g1.cbegin(); i != g1.cend(); ++i)> >cout << *i <<>' '>;> > >cout <<>' Output of rbegin and rend: '>;> >for> (>auto> ir = g1.rbegin(); ir != g1.rend(); ++ir)> >cout << *ir <<>' '>;> > >cout <<>' Output of crbegin and crend : '>;> >for> (>auto> ir = g1.crbegin(); ir != g1.crend(); ++ir)> >cout << *ir <<>' '>;> > >return> 0;> }>

>

>

Ieșire

Output of begin and end: 1 2 3 4 5 Output of cbegin and cend: 1 2 3 4 5 Output of rbegin and rend: 5 4 3 2 1 Output of crbegin and crend : 5 4 3 2 1>

Capacitate

  1. mărimea() – Returnează numărul de elemente din vector.
  2. max_size() – Returnează numărul maxim de elemente pe care le poate conține vectorul.
  3. capacitate() – Returnează dimensiunea spațiului de stocare alocat în prezent vectorului, exprimată ca număr de elemente.
  4. redimensiona(n) – Redimensionează containerul astfel încât să conțină „n” elemente.
  5. gol() – Returnează dacă containerul este gol.
  6. shrink_to_fit() – Reduce capacitatea containerului pentru a se potrivi dimensiunilor sale și distruge toate elementele peste capacitate.
  7. rezervă() – Solicită ca capacitatea vectorului să fie cel puțin suficientă pentru a conține n elemente.

C++




// C++ program to illustrate the> // capacity function in vector> #include> #include> > using> namespace> std;> > int> main()> {> >vector<>int>>g1;>>> >for> (>int> i = 1; i <= 5; i++)> >g1.push_back(i);> > >cout <<>'Size : '> << g1.size();> >cout <<>' Capacity : '> << g1.capacity();> >cout <<>' Max_Size : '> << g1.max_size();> > >// resizes the vector size to 4> >g1.resize(4);> > >// prints the vector size after resize()> >cout <<>' Size : '> << g1.size();> > >// checks if the vector is empty or not> >if> (g1.empty() ==>false>)> >cout <<>' Vector is not empty'>;> >else> >cout <<>' Vector is empty'>;> > >// Shrinks the vector> >g1.shrink_to_fit();> >cout <<>' Vector elements are: '>;> >for> (>auto> it = g1.begin(); it != g1.end(); it++)> >cout << *it <<>' '>;> > >return> 0;> }>

>

citiți din fișierul csv în java
>

Ieșire

Size : 5 Capacity : 8 Max_Size : 4611686018427387903 Size : 4 Vector is not empty Vector elements are: 1 2 3 4>

Acces la elemente

  1. operator de referință [g] – Returnează o referință la elementul din poziția „g” în vector
  2. la(g) – Returnează o referință la elementul din poziția „g” în vector
  3. față() – Returnează o referință la primul element din vector
  4. înapoi() – Returnează o referință la ultimul element din vector
  5. C++




    // C++ program to illustrate the> // element access in vector> #include> using> namespace> std;> > int> main()> {> >vector<>int>>g1;>>> >for> (>int> i = 1; i <= 10; i++)> >g1.push_back(i * 10);> > >cout <<>' Reference operator [g] : g1[2] = '> << g1[2];> > >cout <<>' at : g1.at(4) = '> << g1.at(4);> > >cout <<>' front() : g1.front() = '> << g1.front();> > >cout <<>' back() : g1.back() = '> << g1.back();> > >// pointer to the first element> >int>* pos = g1.data();> > >cout <<>' The first element is '> << *pos;> >return> 0;> }>

    >

    >

    Ieșire

    Reference operator [g] : g1[2] = 30 at : g1.at(4) = 50 front() : g1.front() = 10 back() : g1.back() = 100 The first element is 10>

    Modificatori

    1. atribui() – Atribuie o nouă valoare elementelor vectoriale prin înlocuirea celor vechi
    2. împinge înapoi() – Împinge elementele într-un vector din spate
    3. pop_back() – Este folosit pentru a scoate sau elimina elemente dintr-un vector din spate.
    4. introduce() – Inserează elemente noi înaintea elementului în poziția specificată
    5. şterge() – Este folosit pentru a îndepărta elemente dintr-un container din poziția sau intervalul specificat.
    6. swap() – Este folosit pentru a schimba conținutul unui vector cu un alt vector de același tip. Dimensiunile pot diferi.
    7. clar() – Este folosit pentru a elimina toate elementele containerului vector
    8. plasează() – Extinde containerul prin introducerea unui nou element în poziție
    9. plasează_înapoi() – Este folosit pentru a introduce un nou element în containerul vector, noul element este adăugat la sfârșitul vectorului

    C++




    // C++ program to illustrate the> // Modifiers in vector> #include> #include> using> namespace> std;> > int> main()> {> >// Assign vector> >vector<>int>>în;>>> >// fill the vector with 10 five times> >v.assign(5, 10);> > >cout <<>'The vector elements are: '>;> >for> (>int> i = 0; i cout << v[i] << ' '; // inserts 15 to the last position v.push_back(15); int n = v.size(); cout << ' The last element is: ' << v[n - 1]; // removes last element v.pop_back(); // prints the vector cout << ' The vector elements are: '; for (int i = 0; i cout << v[i] << ' '; // inserts 5 at the beginning v.insert(v.begin(), 5); cout << ' The first element is: ' << v[0]; // removes the first element v.erase(v.begin()); cout << ' The first element is: ' << v[0]; // inserts at the beginning v.emplace(v.begin(), 5); cout << ' The first element is: ' << v[0]; // Inserts 20 at the end v.emplace_back(20); n = v.size(); cout << ' The last element is: ' << v[n - 1]; // erases the vector v.clear(); cout << ' Vector size after clear(): ' << v.size(); // two vector to perform swap vector v1, v2; v1.push_back(1); v1.push_back(2); v2.push_back(3); v2.push_back(4); cout<< ' Vector 1: '; for (int i = 0; i cout << v1[i] << ' '; cout << ' Vector 2: '; for (int i = 0; i cout << v2[i] << ' '; // Swaps v1 and v2 v1.swap(v2); cout << ' After Swap Vector 1: '; for (int i = 0; i cout << v1[i] << ' '; cout << ' Vector 2: '; for (int i = 0; i cout << v2[i] << ' '; }>

    >

    >

    încapsulare java
    Ieșire

    The vector elements are: 10 10 10 10 10 The last element is: 15 The vector elements are: 10 10 10 10 10 The first element is: 5 The first element is: 10 The first element is: 5 The last element is: 20 Vector size after erase(): 0 Vector 1: 1 2 Vector 2: 3 4 After Swap Vector 1: 3 4 Vector 2: 1 2>

    Complexitatea timpului pentru efectuarea diferitelor operații pe vectori este-

    • Acces aleator – constantă O(1)
    • Introducerea sau îndepărtarea elementelor la capăt – constantă O(1)
    • Inserarea sau îndepărtarea elementelor – liniară pe distanța până la capătul vectorului O(N)
    • Cunoscând dimensiunea – constantă O(1)
    • Redimensionarea vectorului - Linear O(N)

    Toate funcțiile membre ale std::vector

    Mai jos este lista tuturor funcțiilor membre ale clasei std::vector în C++:

    Funcție vectorială

    Descriere

    împinge înapoi()

    Adaugă un element la sfârșitul vectorului.

    pop_back()

    Îndepărtează ultimul element al vectorului.

    mărimea()

    Returnează numărul de elemente din vector.

    max_size()

    Returnează numărul maxim de elemente pe care vectorul le poate conține.

    redimensiona()

    Modifică dimensiunea vectorului.

    gol()

    Verifică dacă vectorul este gol.

    operator[]

    Accesează elementul într-o anumită poziție.

    la()

    Accesează elementul într-o anumită poziție, cu verificarea limitelor.

    față()

    Accesează primul element al vectorului.

    înapoi()

    Accesează ultimul element al vectorului.

    ÎNCEPE()

    Returnează un iterator care indică primul element al vectorului.

    Sfârşit()

    Returnează un iterator care indică elementul trecut-sfârșitul vectorului.

    rbegin()

    Returnează un iterator invers care indică ultimul element al vectorului.

    face()

    Returnează un iterator invers care indică elementul care precede primul element al vectorului.

    cbegin

    Returnează const_iterator la început

    câțiva

    Returnează const_iterator la final

    crbegin

    Returnează const_reverse_iterator la început invers

    crede

    Returnează const_reverse_iterator la sfârșitul invers

    introduce()

    Inserează elemente într-o anumită poziție în vector.

    şterge()

    Îndepărtează elemente dintr-o anumită poziție sau domeniu în vector.

    swap()

    Schimbă conținutul vectorului cu cel al altui vector.

    clar()

    imagini de reducere
    Îndepărtează toate elementele din vector.

    plasează()

    Construiește și inserează un element în vector.

    plasează_înapoi()

    Construiește și inserează un element la sfârșitul vectorului.

    atribui()

    Atribuie valori noi elementelor vectoriale prin înlocuirea celor vechi.

    capacitate()

    Returnează dimensiunea spațiului de stocare alocat în prezent vectorului.

    rezervă()

    Solicită ca capacitatea vectorului să fie cel puțin suficientă pentru a conține un număr specificat de elemente.

    shrink_to_fit()

    Reduce utilizarea memoriei prin eliberarea spațiului nefolosit.

    get_allocator

    Returnează o copie a obiectului alocător asociat vectorului.

    Trebuie citit:

    • Cum se verifică dacă un vector conține un element dat în C++?
    • Cum să găsiți indexul unui element dat într-un vector în C++
    • Sortarea unui vector în C++