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:
vectorname (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:
- Includeți fișierul antet iostream în codul nostru. Ne va permite să citim și să scriem pe consolă.
- Includeți fișierul antet vector în codul nostru. Ne va permite să lucrăm cu vectori în C ++.
- Includeți spațiul de nume std pentru a-i folosi clasele și funcțiile fără a-l apela.
- Apelați funcția main () în cadrul căreia trebuie adăugată logica programului.
- {Marchează începutul corpului funcției main ().
- Declarați un vector numit nums pentru a stoca un set de numere întregi.
- 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.
- Î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.
- Imprimați un text pe consolă
- 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 ().
- Imprimați valorile indicate de variabila iterator și consolă pentru fiecare iterație.
- Imprimați un text pe consolă. \ N este un nou caracter de linie, mutând cursorul pe noua linie pentru a imprima de acolo.
- 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 ().
- Imprimați valorile indicate de variabila iterator a pe consolă pentru fiecare iterație.
- Funcția principală ar trebui să returneze o valoare dacă programul rulează cu succes.
- 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:
- Includeți fișierul antet iostream în codul nostru pentru a-i folosi funcțiile.
- Includeți fișierul antet vector în codul nostru pentru a utiliza funcțiile sale.
- Includeți spațiul de nume std pentru a-i folosi clasele fără a-l apela.
- Apelați funcția main (). Logica programului ar trebui adăugată în interiorul corpului său.
- Începutul corpului funcției main ().
- Declarați un vector numit nums pentru a stoca unele valori întregi.
- Stocați 5 elemente în numerele vectoriale. Fiecare cu o valoare de 1.
- Imprimați un text pe consolă
- Utilizați o variabilă iterator a pentru a itera peste elementele numere vectoriale.
- Imprimați valorile numerelor vectoriale pe consolă pentru fiecare iterație.
- Adăugați valoarea 2 la sfârșitul numerelor vectoriale.
- Declarați o variabilă întreagă n pentru a stoca dimensiunea numerelor vectoriale.
- Imprimați ultima valoare a numerelor vectoriale alături de alt text. Ar trebui să returneze un 2.
- Eliminați ultimul element din numerele vectoriale. Cele 2 vor fi eliminate.
- Imprimați text pe consolă. \ N deplasează cursorul pe linia nouă pentru a imprima textul acolo.
- Utilizați o variabilă iterator a pentru a itera peste elementele numere vectoriale.
- Imprimați valorile numerelor vectoriale pe consolă pentru fiecare iterație.
- Introduceți valoarea 7 la începutul numerelor vectoriale.
- Imprimați prima valoare a numerelor vectoriale alături de alt text. Ar trebui să revină 7.
- Ștergeți toate elementele din numerele vectoriale.
- Imprimați dimensiunea vectorului num alături de alt text după ce ați șters tot conținutul. Ar trebui să returneze 0.
- 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:
- Includeți fișierul antet iostream în codul nostru pentru a-și folosi funcția.
- Includeți fișierul antet vector în codul nostru pentru a utiliza funcțiile sale.
- Includeți spațiul de nume std în codul nostru pentru a utiliza clasele sale fără a-l apela.
- Apelați funcția main (). Logica programului trebuie adăugată în corpul acestei funcții.
- Creați un vector numit vector1 pentru a stoca numere întregi.
- Utilizați o buclă for pentru a crea variabila x cu valori de la 1 la 10.
- Împingeți valorile variabilei x în vector.
- Imprimați dimensiunea vectorului alături de alt text de pe consolă.
- Imprimați capacitatea vectorului alături de alt text de pe consolă.
- Imprimați numărul maxim de elemente pe care vectorul le poate păstra alături de alt text de pe consolă.
- Redimensionați vectorul pentru a conține doar 5 elemente.
- Imprimați noua dimensiune a vectorului alături de alt text.
- Verificați dacă vectorul nu este gol.
- Imprimați text pe consolă dacă vectorul nu este gol.
- Utilizați o instrucțiune else pentru a specifica ce trebuie făcut dacă vectorul este gol.
- Text de imprimat pe consolă dacă vectorul este gol.
- Programul trebuie să returneze valoarea la finalizarea cu succes.
- 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.