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

Ce este a C++ Vector?

A C++ Vector 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ă. Acest lucru permite C++ programatori să acceseze și să traverseze elementele vectoriale folosind iteratoare.

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

Când să folosiți un vector?

A C++ vectorul trebuie utilizat în următoarele circumstanțe:

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

Cum să inițializați vectorii în C++

Sintaxa vectorilor în C++ este:

vector <data-type> name (items)
  • După cum se arată mai sus, începem cu cuvântul cheie vector.
  • Tipul de date este tipul de date al elementelor care urmează să fie 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 care sunt stocate într-un vector. Este un obiect care funcționează ca un indicator. Iată iteratoarele comune susținute de C++ vectori:

  • vector:: începe(): oferă un iterator care indică primul element al vectorului.
  • vector:: end(): oferă un iterator care indică elementul trecut-sfârșitul 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 elemente vectoriale.

Modificatorii

Modificatorii sunt utilizați pentru modificarea 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 într-o locație specificată.
  • vector::pop_back(): Acest modificator elimină elementele vectoriale din spate.
  • vector::erase(): Este folosit pentru a elimina o serie de elemente din locația specificată.
  • vector::clear(): Îndepărtează toate elementele vectoriale.

Exemplu 1

#include <iostream> 
#include <vector> 

using namespace std;
int main()
{
	vector<int> 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:

Modificatorii

Iată o captură de ecran a codului:

Modificatorii

Explicația codului:

  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 vectorial în codul nostru. Ne va permite să lucrăm cu vectori în C++.
  3. Includeți spațiul de nume std pentru a utiliza clasele și funcțiile sale fără a-l apela.
  4. Apelați funcția main() în interiorul căreia ar trebui 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ă iterăm peste vector. Variabila ne va ajuta să iterăm peste elementele vectoriale, de la 1st la 5th elemente.
  8. Împingeți elementele în vectorul num 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 ceva text pe consolă
  10. Utilizați o variabilă iteratoare a pentru a itera elementele numerelor vectoriale de la început până la elementul trecut-sfârșit. Rețineți că folosim iteratorii vector::begin() și vector::end().
  11. Imprimați valorile indicate de variabila iterator an pe consolă pentru fiecare iterație.
  12. Tipăriți ceva text pe consolă. \n este un caracter de linie nouă, deplasând cursorul pe noua linie pentru a imprima de acolo.
  13. Utilizați o variabilă iterator pentru a itera elementele numerelor vectoriale de la început până la elementul trecut-sfârșit. Rețineți că folosim iteratorii vector::cbegin() și vector::cend().
  14. Imprimați valorile indicate de variabila iteratoare 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().

Exemplu 2

#include <iostream>
#include <vector> 

using namespace std;
int main()
{
	vector<int> 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:

Modificatorii

Iată o captură de ecran a codului:

Modificatorii

Explicația codului:

  1. Includeți fișierul antet iostream în codul nostru pentru a utiliza funcțiile acestuia.
  2. Includeți fișierul antet vectorial în codul nostru pentru a-l folosi funcții.
  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 corpul său.
  5. Începutul corpului funcției main().
  6. Declarați un vector numit nums pentru a stoca niște valori întregi.
  7. Stocați 5 elemente în numerele vectoriale. Fiecare cu o valoare de 1.
  8. Imprimați ceva text pe consolă
  9. Utilizați o variabilă iteratoare a pentru a itera elementele vectorului nums.
  10. Tipăriți valorile numerelor vectoriale pe consolă pentru fiecare iterație.
  11. Adăugați valoarea 2 la sfârșitul vectorului nums.
  12. Declarați o variabilă întreagă n pentru a stoca dimensiunea numerelor vectoriale.
  13. Tipăriți ultima valoare a numerelor vectoriale alături de alt text. Ar trebui să returneze un 2.
  14. Eliminați ultimul element din vector nums. Cele 2 vor fi eliminate.
  15. Imprimați textul pe consolă. \n mută cursorul pe noua linie pentru a imprima textul acolo.
  16. Utilizați o variabilă iteratoare a pentru a itera elementele vectorului nums.
  17. Tipăriți valorile numerelor vectoriale pe consolă pentru fiecare iterație.
  18. Introduceți valoarea 7 la începutul vectorului nums.
  19. Tipăriți prima valoare a numerelor vectoriale alături de alt text. Ar trebui să revină 7.
  20. Ștergeți toate elementele din vector nums.
  21. Tipăriți dimensiunea vectorului num alături de alt text după ștergerea întregului conținut. 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:

  • Mărimea() -Returnează numărul de elemente dintr-un vector.
  • Dimensiune_max.() - Returnează cel mai mare număr de elemente pe care un vector le poate stoca.
  • Capacitate () –It returnează cantitatea de spațiu de stocare alocată unui vector.
  • Redimensionează () –It redimensionează containerul pentru a conține n articole. Dacă dimensiunea curentă a vectorului este mai mare decât n, elementele din spate vor fi eliminate din vector. Dacă dimensiunea curentă a vectorului este mai mică decât n, elementele suplimentare vor fi adăugate în spatele vectorului.
  • Gol () –it returnează adevărat dacă un vector este gol. În caz contrar, se întoarce fals.

Exemplu 3

#include <iostream> 
#include <vector> 
using namespace std;
int main() {
	vector<int> 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"<<endl;
	else
		cout << "Vector is empty"<<endl;
	return 0;
}

ieșire:

Capacitate

Iată o captură de ecran a codului:

Capacitate

Explicația codului:

  1. Includeți fișierul antet iostream în codul nostru pentru a utiliza funcția acestuia.
  2. Includeți fișierul antet vectorial în codul nostru pentru a utiliza funcțiile acestuia.
  3. Includeți spațiul de nume std în codul nostru pentru a-i folosi clasele fără a-l apela.
  4. Apelați funcția main(). Logica programului ar trebui 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. Tipăriț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 pe consolă.
  11. Redimensionați vectorul pentru a conține doar 5 elemente.
  12. Tipăriți noua dimensiune a vectorului alături de alt text.
  13. Verificați dacă vectorul nu este gol.
  14. Tipăriți text pe consolă dacă vectorul nu este gol.
  15. Utilizați o instrucțiune else pentru a spune ce trebuie făcut dacă vectorul este gol.
  16. Text de tipărit pe consolă dacă vectorul este gol.
  17. Programul trebuie să returneze valoare după finalizarea cu succes.
  18. Sfârșitul corpului funcției main().

Rezumat

  • A C++ vector este o matrice dinamică capabilă să se redimensioneze automat atunci când un element este adăugat sau șters din el.
  • Depozitarea unui vector este gestionată automat de container.
  • Elementele unui vector sunt stocate în stocare contiguă pentru a fi accesate apoi traversate folosind iteratoare.
  • Inserarea de date noi într-un vector se face la sfârșitul acestuia.
  • Introducerea datelor într-un vector durează un timp diferențial.
  • Îndepărtarea unui element dintr-un vector durează timp constant.
  • Inserarea sau ștergerea unui element la început necesită timp liniar.
  • Vectorii ar trebui să fie folosiți atunci când aveți de-a face cu elemente de date care se modifică în mod constant.
  • De asemenea, puteți utiliza vectori dacă dimensiunea datelor nu este cunoscută înainte de a începe.