Vektor u C++ Biblioteka standardnih predložaka (STL) s primjerom
Što je a C++ Vektor?
A C++ vektor je dinamički niz koji može sam sebi mijenjati veličinu automatski. Promjena veličine se događa nakon što je element dodan ili izbrisan iz vektora. Spremnik automatski upravlja skladištenjem. Elementi vektora pohranjuju se u kontinuiranu pohranu. Ovo dopušta C++ programeri za pristup i prelazak vektorskih elemenata pomoću iteratora.
Umetanje novih podataka u vektor vrši se na njegovom kraju. Za to je potrebno određeno vrijeme. Uklanjanje elementa iz vektora traje konstantno vrijeme. Razlog je što nema potrebe mijenjati veličinu vektora. Umetanje ili brisanje elementa na početku vektora traje linearno.
Kada koristiti vektor?
A C++ vektor treba koristiti u sljedećim okolnostima:
- Kada se radi o elementima podataka koji se dosljedno mijenjaju.
- Ako veličina podataka nije poznata prije početka, vektor neće zahtijevati da postavite maksimalnu veličinu spremnika.
Kako inicijalizirati vektore u C++
Sintaksa vektora u C++ je:
vector <data-type> name (items)
- Kao što je gore prikazano, počinjemo s ključnom riječi vektor.
- Tip podataka je tip podataka elemenata koji se pohranjuju u vektor.
- Ime je ime vektora ili podatkovnih elemenata.
- Stavke označavaju broj elemenata za podatke vektora. Ovaj parametar nije obavezan.
Iteratori
Svrha iteratora je da nam pomognu pristupiti elementima koji su pohranjeni u vektoru. To je objekt koji radi kao pokazivač. Ovdje su uobičajeni iteratori koje podržava C++ vektori:
- vektor:: početak(): daje iterator koji pokazuje na prvi element vektora.
- vektor:: kraj(): daje iterator koji pokazuje na zadnji element vektora.
- vektor::cbegin(): isti je kao vector::begin(), ali nema mogućnost mijenjanja elemenata.
- vektor::cend(): isto je kao vector::end() ali ne može mijenjati vektorske elemente.
Izmjenjivači
Modifikatori se koriste za promjenu značenja navedenog tipa podataka. Evo uobičajenih modifikatora u C++:
- vektor::push_back(): Ovaj modifikator gura elemente sa stražnje strane.
- vektor::umetni(): Za umetanje novih stavki u vektor na određenom mjestu.
- vektor::pop_back(): Ovaj modifikator uklanja vektorske elemente sa stražnje strane.
- vektor::brisanje(): Koristi se za uklanjanje niza elemenata sa specificirane lokacije.
- vektor::očisti(): Uklanja sve vektorske elemente.
Primjer 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;
}
Izlaz:
Evo snimke zaslona koda:
Objašnjenje koda:
- Uključite iostream datoteku zaglavlja u naš kod. Omogućit će nam čitanje s konzole i pisanje na nju.
- Uključite vektorsku datoteku zaglavlja u naš kod. Omogućit će nam rad s vektorima C++.
- Uključite prostor imena std kako biste koristili njegove klase i funkcije bez pozivanja.
- Pozovite funkciju main() unutar koje treba dodati logiku programa.
- { označava početak tijela funkcije main().
- Deklarirajte vektor pod nazivom nums za pohranu skupa cijelih brojeva.
- Napravite for petlju koja će nam pomoći da iteriramo preko vektora. Varijabla će nam pomoći da iteriramo preko vektorskih elemenata, od 1st na 5th elementi.
- Gurnite elemente u vektor num sa stražnje strane. Za svaku iteraciju, ovo će dodati trenutnu vrijednost varijable a u vektor, koji je od 1 do 5.
- Ispišite tekst na konzoli
- Upotrijebite varijablu iteratora a za iteraciju preko elemenata brojeva vektora od početka do zadnjeg elementa. Imajte na umu da koristimo iteratore vector::begin() i vector::end().
- Ispišite vrijednosti na koje ukazuje varijabla iteratora an na konzoli za svaku iteraciju.
- Ispišite tekst na konzoli. \n je znak novog retka, pomiče kursor u novi red da bi se odatle ispisao.
- Upotrijebite varijablu iteratora za iteraciju preko elemenata brojeva vektora od početka do zadnjeg elementa. Imajte na umu da koristimo iteratore vector::cbegin() i vector::cend().
- Ispišite vrijednosti na koje ukazuje varijabla iteratora a na konzoli za svaku iteraciju.
- Funkcija main trebala bi vratiti vrijednost ako se program uspješno izvodi.
- Kraj tijela funkcije main().
Primjer 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();
}
Izlaz:
Evo snimke zaslona koda:
Objašnjenje koda:
- Uključite iostream datoteku zaglavlja u naš kod da biste koristili njezine funkcije.
- Uključite vektorsku datoteku zaglavlja u naš kod da biste je koristili Funkcije.
- Uključite prostor imena std da biste koristili njegove klase bez pozivanja.
- Pozovite funkciju main(). Programsku logiku treba dodati unutar njegovog tijela.
- Početak tijela funkcije main().
- Deklarirajte vektor pod nazivom nums za pohranu nekih cjelobrojnih vrijednosti.
- Pohranite 5 elemenata u brojeve vektora. Svaki ima vrijednost 1.
- Ispišite tekst na konzoli
- Upotrijebite varijablu iteratora a za iteraciju preko elemenata brojeva vektora.
- Ispišite vrijednosti vektorskih brojeva na konzoli za svaku iteraciju.
- Dodajte vrijednost 2 na kraj brojeva vektora.
- Deklarirajte cjelobrojnu varijablu n za pohranjivanje veličine vektorskih brojeva.
- Ispišite posljednju vrijednost vektorskih brojeva uz ostali tekst. Trebao bi vratiti 2.
- Uklonite posljednji element iz brojeva vektora. 2 će biti uklonjena.
- Ispis teksta na konzoli. \n pomiče kursor u novi red kako bi se tamo ispisao tekst.
- Upotrijebite varijablu iteratora a za iteraciju preko elemenata brojeva vektora.
- Ispišite vrijednosti vektorskih brojeva na konzoli za svaku iteraciju.
- Umetnite vrijednost 7 na početak brojeva vektora.
- Ispišite prvu vrijednost brojeva vektora uz ostali tekst. Trebalo bi vratiti 7.
- Izbrišite sve elemente iz brojeva vektora.
- Ispišite veličinu vektorskog broja uz drugi tekst nakon brisanja svih sadržaja. Trebao bi vratiti 0.
- Kraj tijela funkcije main().
Kapacitet
Koristite sljedeće funkcije za određivanje kapaciteta vektora:
- Veličina() –Vraća broj stavki u vektoru.
- Max_size() - Vraća najveći broj stavki koje vektor može pohraniti.
- Kapacitet () – It vraća količinu prostora za pohranu dodijeljenu vektoru.
- Promjena veličine () – It mijenja veličinu spremnika da sadrži n stavki. Ako je trenutna veličina vektora veća od n, zadnje stavke bit će uklonjene iz vektora. Ako je trenutna veličina vektora manja od n, dodatne stavke će se dodati na stražnju stranu vektora.
- Prazan () –it vraća true ako je vektor prazan. Inače, vraća false.
Primjer 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;
}
Izlaz:
Evo snimke zaslona koda:
Objašnjenje koda:
- Uključite datoteku zaglavlja iostream u naš kod da biste koristili njegovu funkciju.
- Uključite vektorsku datoteku zaglavlja u naš kod da biste koristili njezine funkcije.
- Uključite prostor imena std u naš kod da biste koristili njegove klase bez pozivanja.
- Pozovite funkciju main(). Programsku logiku treba dodati unutar tijela ove funkcije.
- Napravite vektor pod nazivom vector1 za pohranjivanje cijelih brojeva.
- Upotrijebite for petlju za stvaranje varijable x s vrijednostima od 1 do 10.
- Gurnite vrijednosti varijable x u vektor.
- Ispišite veličinu vektora uz ostali tekst na konzoli.
- Ispišite kapacitet vektora uz ostali tekst na konzoli.
- Ispišite najveći broj stavki koje vektor može sadržavati uz drugi tekst na konzoli.
- Promijenite veličinu vektora da sadrži samo 5 elemenata.
- Ispišite novu veličinu vektora uz ostali tekst.
- Provjerite nije li vektor prazan.
- Ispišite tekst na konzoli ako vektor nije prazan.
- Upotrijebite naredbu else da odredite što učiniti ako je vektor prazan.
- Tekst za ispis na konzoli ako je vektor prazan.
- Program mora vratiti vrijednost nakon uspješnog završetka.
- Kraj tijela funkcije main().
Rezime
- A C++ vektor je dinamički niz koji je sposoban automatski mijenjati veličinu kada se element doda ili iz njega izbriše.
- Spremnik automatski upravlja pohranom vektora.
- Elementi vektora pohranjuju se u kontinuiranu pohranu kako bi im se pristupilo, a zatim obilazili pomoću iteratora.
- Umetanje novih podataka u vektor vrši se na njegovom kraju.
- Umetanje podataka u vektor traje diferencijalno vrijeme.
- Uklanjanje elementa iz vektora traje konstantno vrijeme.
- Umetanje ili brisanje elementa na početku traje linearno.
- Vektore treba koristiti kada se radi o elementima podataka koji se dosljedno mijenjaju.
- Također, možete koristiti vektore ako veličina podataka nije poznata prije početka.





