Vektor u C++ Biblioteka standardnih predložaka (STL) s primjerom
⚡ Pametni sažetak
Vektor u C++ je dinamički niz iz Standardne biblioteke predložaka koji automatski mijenja veličinu kako se elementi dodaju ili uklanjaju, pohranjujući stavke u susjednu memoriju tako da im programeri mogu pristupiti i kretati se kroz njih pomoću iteratora.

Š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. To traje diferencijalno vrijeme. Uklanjanje elementa iz vektora traje konstantno vrijeme. Razlog je taj što nema potrebe za promjenom veličine vektora. Umetanje ili brisanje elementa na početku vektora traje linearno vrijeme.
Prije pisanja koda s vektorima, korisno je znati kada su oni pravi spremnik za korištenje.
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 postavljanje maksimalne veličine 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.
- The tip podataka je tip podataka elemenata koji će se pohraniti u vektor.
- The ime je naziv vektora ili podatkovnih elemenata.
- The predmeti označava broj elemenata za vektorske podatke. Ovaj parametar je opcionalan.
Nakon što vektor postoji, iteratori vam daju način kretanja po njegovim elementima, sličan pokazivaču.
Iteratori
Svrha iteratora je pomoći nam u pristupu elementima koji su pohranjeni u vektoru. To je objekt koji funkcionira poput pokazivača. Evo uobičajenih iteratora 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(): Isto je kao i vector::begin(), ali nema mogućnost mijenjanja elemenata.
- vektor::cend(): Isto je kao i vector::end(), ali ne može mijenjati vektorske elemente.
Sljedeći primjer popunjava vektor, a zatim prolazi kroz njega s promjenjivim i konstantnim iteratorima.
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:
Code Objašnjenje:
- 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 petlju for koja će nam pomoći u iteraciji kroz vektor. Varijabla će nam pomoći u iteraciji kroz elemente vektora, od 1. do 5. elementa.
- 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 a 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.
- Koristite varijablu iteratora za iteraciju kroz elemente vektora brojeva od početka do elementa nakon kraja. 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().
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.
Sljedeći primjer primjenjuje ove modifikatore redom kako bi se vidjelo kako se vektor mijenja.
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:
Code Objašnjenje:
- Uključite iostream datoteku zaglavlja u naš kod da biste koristili njezine funkcije.
- Uključite vektorsku datoteku zaglavlja u naš kod da biste koristili njezine 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 elemenata u vektoru.
- Max_size() – Vraća najveći broj elemenata koje vektor može pohraniti.
- Kapacitet() – Vraća količinu memorijskog prostora dodijeljenog vektoru.
- Promijeni veličinu() – Mijenja veličinu spremnika kako bi sadržavao n stavki. Ako je trenutna veličina vektora veća od n, stražnje stavke bit će uklonjene iz vektora. Ako je trenutna veličina vektora manja od n, dodatne stavke bit će dodane na kraj vektora.
- Prazan() – vraća vrijednost true ako je vektor prazan. Inače vraća vrijednost false.
Ovaj posljednji primjer prikazuje i prilagođava pohranu vektora koristeći gore navedene funkcije kapaciteta.
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:
Code Objašnjenje:
- 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().





