Vektori
U ovoj lekciji upoznaćemo se sa glavnom array-like strukturom podataka u c++-u — vektorima ( vector )
Vektori
Vektori su nizovi promenljive veličine, što znači da tokom izvršavanja programa možemo dinamički menjati njihov broj elemenata, a i dalje pristupati elementima u O(1) vremenskoj složenosti.
Takođe možemo dodavati i uklanjati elemente sa kraja vektora.
Deklarišu se ovako: vector<tip_podatka> ime_vektora(n, početna_vrednost)
tip_podatkaiime_vektorasu prilično jasni sami po sebinipočetna_vrednostnisu obavezni, ali ako ih navedemo, vektor će na početku sadržatinelemenata i svaki od njih će imati vrednostpočetna_vrednost- Ako navedemo samo
n, bez podrazumevane vrednosti, vektor će biti popunjen “nultim” vrednostima u zavisnosti od tipa podataka (0,"", itd.)
i-tom elementu vektora pristupamo pomoću a[i], gde je a ime našeg vektora.
Primer:
int main(){
int n = 3;
vector<int> a(n); //inicijalizujemo vektor a veličine n
for(int i =0;i<n;i++){ //primetite da brojanje počinje od 0
cin>>a[i]; //unosimo i-ti element
}
cout<<"Treći element vektora je "<<a[2]; //treći element ima indeks a[2]
return 0;
}Input: 6 7 8
Output: Treći element vektora je 8
Iako indeksiranje kreće od 0, ništa nas ne sprečava da ignorišemo a[0] i koristimo a[1] kao prvi element.
U tom slučaju moramo malo izmeniti kod:
int main(){
int n = 3;
vector<int> a(n+1); //ako brojimo od 1, potrebano nam je n+1 elemenata
for(int i =1;i<=n;i++){ //primetite uslov i<=n
cin>>a[i]; //unosimo i-ti element
}
cout<<"Treći element vektora je "<<a[3]; //sada je treći element a[3]
return 0;
}Input: 6 7 8
Output: Treći element vektora je 8
Funkcije za rad sa vektorima
Vektori imaju veliki broj ugrađenih funkcija koje olakšavaju rad sa njima.
Možemo koristiti funkcije za dodavanje elemenata, uklanjanje elemenata i još mnogo toga.
Najvažnije funkcije su (pretpostavljamo da je a tipa vector<int>):
-
a.push_back(x);- dodaje elementxna kraj vektora ako imamo[1,2,3]i pozovemoa.push_back(4), vektor postaje[1,2,3,4] -
a.pop_back();- uklanja poslednji element vektora tako da vektor[1,2,3]postaje[1,2] -
a.size()- vraća veličinu (dužinu) vektora
Primer:
#include <bits/stdc++.h>
using namespace std;
void stampaj_vektor(vector<int> a){ // Ovo je naša proizvoljna funkcija
for(int i=0;i<a.size();i++){ //primetite a.size()
cout<<a[i]<<" "; //ovde ispisujemo elemente vektora
}
cout<<'\n'; //newline karakter, isto kao Enter na tastaturi
}
int main(){
int n = 3;
vector<int> a(n);
stampaj_vektor(a); // Pozivamo našu proizvoljnu funkciju
a[0] = 1;
a[1] = 2;
a[2] = 3;
a.push_back(4);
a.push_back(5);
stampaj_vektor(a); // Pozivamo našu proizvoljnu funkciju
a.pop_back();
stampaj_vektor(a); // Ponovo pozivamo našu proizvoljnu funkciju
return 0;
}Output:
1 2 3
1 2 3 4 5
1 2 3 4