Vector în biblioteca de șabloane standard C ++ (STL) cu exemplu

Cuprins:

Anonim

Ce este un vector C ++?

Un VECTOR C ++ este o matrice dinamică capabilă să se redimensioneze automat. Redimensionarea are loc după ce un element a fost adăugat sau șters din vector. Depozitarea este gestionată automat de container. Elementele unui vector sunt stocate în stocare contiguă. Aceasta permite programatorilor C ++ să acceseze și să traverseze elementele vectoriale folosind iteratoare.

Inserarea de noi date într-un vector se face la sfârșitul acestuia. Acest lucru necesită un timp diferențial. Eliminarea unui element dintr-un vector necesită timp constant. Motivul este că nu este nevoie să redimensionați vectorul. Inserarea sau ștergerea unui element la începutul vectorului durează liniar.

În acest tutorial C ++, veți învăța:

  • Ce este un vector C ++?
  • Când se folosește un vector?
  • Cum se inițializează vectori în C ++
  • Iteratori
  • Modificatori
  • Exemplul 1
  • Exemplul 2
  • Capacitate
  • Exemplul 3

Când se folosește un vector?

Un vector C ++ trebuie utilizat în următoarele circumstanțe:

  • Când aveți de-a face cu elemente de date care se schimbă în mod constant.
  • Dacă dimensiunea datelor nu este cunoscută înainte de a începe, vectorul nu vă va cere să setați dimensiunea maximă a containerului.

Cum se inițializează vectori în C ++

Sintaxa vectorilor din C ++ este:

vector  name (items)
  • După cum se arată mai sus, începem cu cuvântul cheie vector.
  • Tipul de date este tipul de date al elementelor care trebuie stocate în vector.
  • Numele este numele vectorului sau al elementelor de date.
  • Elementele indică numărul de elemente pentru datele vectorului. Acest parametru este opțional.

Iteratori

Scopul iteratorilor este de a ne ajuta să accesăm elementele stocate într-un vector. Este un obiect care funcționează ca un indicator. Iată iteratorii obișnuiți suportați de vectori C ++:

  • vector :: begin (): oferă un iterator care indică primul element al vectorului.
  • vector :: end (): oferă un iterator care indică elementul trecut-sfârșit al vectorului.
  • vector :: cbegin (): este la fel ca vector :: begin (), dar nu are capacitatea de a modifica elemente.
  • vector :: cend (): este la fel ca vector :: end () dar nu poate modifica elementele vectoriale.

Modificatori

Modificatorii sunt utilizați pentru schimbarea semnificației tipului de date specificat. Iată modificatorii obișnuiți în C ++:

  • vector :: push_back (): Acest modificator împinge elementele din spate.
  • vector :: insert (): Pentru inserarea de elemente noi într-un vector la o locație specificată.
  • vector :: pop_back (): Acest modificator elimină elementele vectoriale din spate.
  • vector :: erase (): Este folosit pentru eliminarea unei game de elemente din locația specificată.
  • vector :: clear (): Elimină toate elementele vectoriale.

Exemplul 1

#include #include using namespace std;int main(){vector nums;for (int a = 1; a <= 5; a++)nums.push_back(a);cout << "Output from begin and end: ";for (auto a = nums.begin(); a != nums.end(); ++a)cout << *a << " ";cout << "\nOutput from cbegin and cend: ";for (auto a = nums.cbegin(); a != nums.cend(); ++a)cout << *a << " ";return 0;}

Ieșire:

Iată o captură de ecran a codului:

Explicatie cod:

  1. Includeți fișierul antet iostream în codul nostru. Ne va permite să citim și să scriem pe consolă.
  2. Includeți fișierul antet vector în codul nostru. Ne va permite să lucrăm cu vectori în C ++.
  3. Includeți spațiul de nume std pentru a-i folosi clasele și funcțiile fără a-l apela.
  4. Apelați funcția main () în cadrul căreia trebuie adăugată logica programului.
  5. {Marchează începutul corpului funcției main ().
  6. Declarați un vector numit nums pentru a stoca un set de numere întregi.
  7. Creați o buclă for pentru a ne ajuta să iterați peste vector. Variabila ne va ajuta iteraŃia asupra elementelor vectoriale, de la 1 st la 5 mii elemente.
  8. Împingeți elementele în numarul vectorului din spate. Pentru fiecare iterație, aceasta va adăuga valoarea curentă a variabilei a în vector, care este de la 1 la 5.
  9. Imprimați un text pe consolă
  10. Utilizați o variabilă iteratorie a pentru a itera peste elementele numerelor vectoriale de la început până la elementul trecut-sfârșit. Rețineți că folosim iteratori vector :: begin () și vector :: end ().
  11. Imprimați valorile indicate de variabila iterator și consolă pentru fiecare iterație.
  12. Imprimați un text pe consolă. \ N este un nou caracter de linie, mutând cursorul pe noua linie pentru a imprima de acolo.
  13. Utilizați o variabilă iterator pentru a itera peste elementele numerelor vectoriale de la început până la elementul trecut-sfârșit. Rețineți că folosim iteratori vector :: cbegin () și vector :: cend ().
  14. Imprimați valorile indicate de variabila iterator a pe consolă pentru fiecare iterație.
  15. Funcția principală ar trebui să returneze o valoare dacă programul rulează cu succes.
  16. Sfârșitul corpului funcției main ().

Exemplul 2

#include #include using namespace std;int main(){vector nums;nums.assign(5, 1);cout << "Vector contents: ";for (int a = 0; a < nums.size(); a++)cout << nums[a] << " ";nums.push_back(2);int n = nums.size();cout << "\nLast element: " << nums[n - 1];nums.pop_back();cout << "\nVector contents: ";for (int a = 0; a < nums.size(); a++)cout << nums[a] << " ";nums.insert(nums.begin(), 7);cout << "\nFirst element: " << nums[0];nums.clear();cout << "\nSize after clear(): " << nums.size();}

Ieșire:

Iată o captură de ecran a codului:

Explicatie cod:

  1. Includeți fișierul antet iostream în codul nostru pentru a-i folosi funcțiile.
  2. Includeți fișierul antet vector în codul nostru pentru a utiliza funcțiile sale.
  3. Includeți spațiul de nume std pentru a-i folosi clasele fără a-l apela.
  4. Apelați funcția main (). Logica programului ar trebui adăugată în interiorul corpului său.
  5. Începutul corpului funcției main ().
  6. Declarați un vector numit nums pentru a stoca unele valori întregi.
  7. Stocați 5 elemente în numerele vectoriale. Fiecare cu o valoare de 1.
  8. Imprimați un text pe consolă
  9. Utilizați o variabilă iterator a pentru a itera peste elementele numere vectoriale.
  10. Imprimați valorile numerelor vectoriale pe consolă pentru fiecare iterație.
  11. Adăugați valoarea 2 la sfârșitul numerelor vectoriale.
  12. Declarați o variabilă întreagă n pentru a stoca dimensiunea numerelor vectoriale.
  13. Imprimați ultima valoare a numerelor vectoriale alături de alt text. Ar trebui să returneze un 2.
  14. Eliminați ultimul element din numerele vectoriale. Cele 2 vor fi eliminate.
  15. Imprimați text pe consolă. \ N deplasează cursorul pe linia nouă pentru a imprima textul acolo.
  16. Utilizați o variabilă iterator a pentru a itera peste elementele numere vectoriale.
  17. Imprimați valorile numerelor vectoriale pe consolă pentru fiecare iterație.
  18. Introduceți valoarea 7 la începutul numerelor vectoriale.
  19. Imprimați prima valoare a numerelor vectoriale alături de alt text. Ar trebui să revină 7.
  20. Ștergeți toate elementele din numerele vectoriale.
  21. Imprimați dimensiunea vectorului num alături de alt text după ce ați șters tot conținutul. Ar trebui să returneze 0.
  22. Sfârșitul corpului funcției main ().

Capacitate

Utilizați următoarele funcții pentru a determina capacitatea unui vector:

  • Size () - Returnează numărul de articole dintr-un vector.
  • Max_size () - Returnează cel mai mare număr de articole pe care le poate stoca un vector.
  • Capacity () - Returnează cantitatea de spațiu de stocare alocată unui vector.
  • Resize () - Redimensionează containerul pentru a conține n articole. Dacă dimensiunea actuală a vectorului este mai mare decât n, elementele din spate vor fi eliminate din vector. Dacă dimensiunea actuală a vectorului este mai mică decât n, elementele suplimentare vor fi adăugate în partea din spate a vectorului.
  • Empty () -i t returnează true dacă un vector este gol, altfel, returnează false.

Exemplul 3

#include #include using namespace std;int main() {vector vector1;for (int x = 1; x <= 10; x++)vector1.push_back(x);cout << "Vector size: " << vector1.size()<< endl;cout << "Vector capacity: " << vector1.capacity() << endl;cout << "Maximum size of vector: " << vector1.max_size()<< endl;vector1.resize(5);cout << "Vector size after resizing: " << vector1.size() << endl;if (vector1.empty() == false)cout << "Vector is not empty"<

Ieșire:

Iată o captură de ecran a codului:

Explicatie cod:

  1. Includeți fișierul antet iostream în codul nostru pentru a-și folosi funcția.
  2. Includeți fișierul antet vector în codul nostru pentru a utiliza funcțiile sale.
  3. Includeți spațiul de nume std în codul nostru pentru a utiliza clasele sale fără a-l apela.
  4. Apelați funcția main (). Logica programului trebuie adăugată în corpul acestei funcții.
  5. Creați un vector numit vector1 pentru a stoca numere întregi.
  6. Utilizați o buclă for pentru a crea variabila x cu valori de la 1 la 10.
  7. Împingeți valorile variabilei x în vector.
  8. Imprimați dimensiunea vectorului alături de alt text de pe consolă.
  9. Imprimați capacitatea vectorului alături de alt text de pe consolă.
  10. Imprimați numărul maxim de elemente pe care vectorul le poate păstra alături de alt text de pe consolă.
  11. Redimensionați vectorul pentru a conține doar 5 elemente.
  12. Imprimați noua dimensiune a vectorului alături de alt text.
  13. Verificați dacă vectorul nu este gol.
  14. Imprimați text pe consolă dacă vectorul nu este gol.
  15. Utilizați o instrucțiune else pentru a specifica ce trebuie făcut dacă vectorul este gol.
  16. Text de imprimat pe consolă dacă vectorul este gol.
  17. Programul trebuie să returneze valoarea la finalizarea cu succes.
  18. Sfârșitul corpului funcției principale ().

Rezumat:

  • Un vector C ++ este o matrice dinamică capabilă să se redimensioneze automat atunci când un element este adăugat sau șters din acesta.
  • Stocarea pentru un vector este gestionată automat de container.
  • Elementele unui vector sunt stocate într-un spațiu de stocare contiguu pentru a putea fi accesate apoi parcurse cu ajutorul iteratorilor.
  • Inserarea de noi date într-un vector se face la sfârșitul acestuia.
  • Inserarea datelor într-un vector necesită un timp diferențial.
  • Eliminarea unui element dintr-un vector necesită timp constant.
  • Inserarea sau ștergerea unui element la început necesită timp liniar.
  • Vectorii ar trebui utilizați atunci când se tratează elemente de date care se schimbă constant.
  • De asemenea, puteți utiliza vectori dacă dimensiunea datelor nu este cunoscută înainte de a începe.