C ++

Kako uporabljati vektor C ++

Kako uporabljati vektor C ++

Uvod

Matrika je vrsta istih predmetnih vrst v zaporednih pomnilniških mestih. Niz ne more povečati ali zmanjšati dolžine rude. Vektor je kot matrika, vendar je njegovo dolžino mogoče povečati ali zmanjšati. Vektor ima zato veliko več operacij kot matrika.

C ++ ima veliko knjižnic, ki vse tvorijo standardno knjižnico C ++. Ena od teh knjižnic je knjižnica vsebnikov. Vsebnik je zbirka predmetov in na zbirki je mogoče izvajati določene operacije. Zabojnike C ++ lahko razvrstimo v dva sklopa: zabojnike za zaporedje in asociacijske vsebnike. Zabojniki zaporedja so vektor, matrika (ni ista matrika, o kateri smo že govorili), deque, forward_list in list. To so različne zbirke (strukturi podatkov podobne matriki) in vsaka ponuja različne kompromise.

Vsak programer bi se moral odločiti, ali bo uporabil vektor, matriko, deque, forward_list ali seznam. Ko programer potrebuje strukturo, ki zahteva več operacij kot tistih, povezanih z navadnim nizom, navadnega polja ne bi smeli uporabljati.

Če opravilo vključuje pogoste vstavitve in brisanja sredi zaporedja, je treba uporabiti seznam ali naprej_list. Če naloga vključuje pogoste vstavitve in brisanja na začetku ali koncu zaporedja, je treba uporabiti deque. Kadar tovrstne operacije niso potrebne, je treba uporabiti vektor.

V tem članku je razloženo, kako uporabljati vektor C ++. Za razumevanje tega članka boste potrebovali nekaj znanja o kazalcih, referencah in nizih C ++.

Razred in predmeti

Razred je nabor spremenljivk in funkcij, ki delujejo skupaj, pri čemer spremenljivkam niso dodeljene vrednosti. Ko so spremenljivkam dodeljene vrednosti, razred postane objekt. Različne vrednosti, dane istemu razredu, povzročajo različne predmete; to pomeni, da so lahko različni predmeti istega razreda, vendar imajo različne vrednosti. Ustvarjanje predmeta iz razreda je znano tudi kot instanciranje predmeta.

Izraz vektor opisuje razred. Predmet, ustvarjen iz vektorja, ima ime, ki ga izbere programer.

Funkcija, ki pripada razredu, je potrebna za primerek predmeta iz razreda. V C ++ ima ta funkcija enako ime kot ime razreda. Različni predmeti, ustvarjeni (primerki) iz razreda, imajo različna imena, ki jih programer dodeli vsakemu od njih.

Ustvarjanje predmeta iz razreda pomeni konstruiranje predmeta; to pomeni tudi instanciranje predmeta.

Vektorski razred

Vektorski razred je že definiran in je v knjižnici. Če želite uporabiti vektorski razred, mora programer v datoteko vključiti glavo vektorja z naslednjo direktivo o predhodni obdelavi:

#include

Ko je vključena glava, postanejo dostopne vse vektorske funkcije (podatki in člani). Če želite uporabiti predmet štetja za izhod podatkov na terminal (konzolo), mora biti vključena tudi glava predmeta. Če želite napisati program z vektorjem, morate vključiti vsaj naslednje glave:

#include
#include

Prenos vektorja

int foo [10];

Zgoraj je deklaracija matrike z imenom "foo" in številom elementov "10.”To je vrsta celih števil. Izjava vektorja je podobna. Za vektor je število elementov neobvezno, saj se lahko dolžina vektorja poveča ali zmanjša.

Na tej točki v programu je bil vektorski razred že definiran v knjižnici in vključena je glava. Primerek vektorja je mogoč na naslednji način:

std :: vektor vtr (8);

Tu je vektor posebne konstruktorske funkcije. Vrsta podatkov, ki jih bo imel vektor, je v oglatih oklepajih "int". Izraz "vtr" je ime, ki ga je programer izbral za vektor. Na koncu je »8« v oklepajih okvirno število celih števil, ki jih bo imel vektor.

Izraz "std" pomeni standardni imenski prostor. V tem kontekstu mora temu izrazu slediti dvojno dvopičje. Vsakdo lahko napiše svojo knjižnico vektorskih razredov in jo uporabi. Vendar ima C ++ že standardno knjižnico s standardnimi imeni, vključno z “vektorjem."Če želite uporabiti standardno ime, mora biti pred standardnim imenom std :: . Da se izognete tipkanju std :: vsakič, ko v programu vnesete standardno ime, se programska datoteka lahko zažene na naslednji način:

#include
#include
uporaba imenskega prostora std;

Preobremenitev funkcije

Če imata dva ali več različnih podpisov funkcij isto ime, naj bi bilo to ime preobremenjeno. Ko pokličete eno funkcijo, število in vrsta argumentov določita, katera funkcija se izvede.

Konstruiranje vektorja

Konstruiranje vektorja pomeni instanciranje (ustvarjanje) vektorskega predmeta. Funkcija konstruktorja je preobremenjena na naslednji način:

vektor ime

To ustvari vektor dolžine nič in vtipkajte „T."Naslednji stavek ustvari vektor ničelne dolžine tipa" float "z imenom" vtr: "

vektor vtr;

vektor ime (n)

To ustvari vektor z n elementi tipa „T."Izjava za ta vektor s štirimi float elementi je naslednja:

vektor vtr (4);

vektor ime (n, t)

To ustvari vektor iz n elementov, inicializiranih na vrednost t. Naslednji stavek ustvari vektor 5 elementov, pri čemer ima vsak element vrednost 3.4:

vektor vtr (5, 3.4);

Konstruiranje z inicializacijo

Vektor je mogoče zgraditi (ustvariti) in inicializirati hkrati na enega od naslednjih dveh načinov:

vektor vtr = 1.1, 2.2, 3.3, 4.4;

Ali

vektor vtr 1.1, 2.2, 3.3, 4.4;

Upoštevajte, da takoj za imenom predmeta ni oklepajev. V oklepajih, ki se uporabljajo tik za imenom predmeta, mora biti seznam inicializatorjev, kot sledi:

vektor vtr (1.1, 2.2, 3.3, 4.4);

Vektor je mogoče zgraditi in inicializirati pozneje s seznamom inicializatorja. V tem primeru oklepaji ne bodo uporabljeni:

vektor vtr;
vtr = 1.1, 2.2, 3.3, 4.4;

vektor V2 (V1)

To je konstruktor kopij. Ustvari vektor V2 kot kopijo vektorja V1. Naslednja koda to ponazarja:

vektor vtr1 (5, 3.4);
vektor vtr2 (vtr1);

Dodelitev vektorja med gradnjo

Med gradnjo lahko ustvarite prazen vektor, medtem ko mu je dodeljen drug, kot sledi:

vektor vtr1 1.1, 2.2, 3.3, 4.4;
vektor vtr2 = vtr1;

Druga izjava je enakovredna:

vektor vtr2 = 1.1, 2.2, 3.3, 4.4;

const Vector

Const vektor je vektor, katerega elementov ni mogoče spremeniti. Vrednosti v tem vektorju so samo za branje. Ko je ustvarjen, se vektor prikaže na naslednji način:

const vektor vtr 1.1, 2.2, 3.3, 4.4;

Pri tej vektorski vrsti nobenega elementa ni mogoče dodati ali odstraniti. Poleg tega nobene vrednosti ni mogoče spremeniti.

Konstruiranje z Iteratorjem

Predloga zagotavlja generično predstavitev za podatkovni tip. Iterator zagotavlja splošno predstavitev skeniranja skozi vrednosti vsebnika. Sintaksa za ustvarjanje vektorja s ponoviteljem je naslednja:

predloga
vektor (InputIterator prvi, InputIterator zadnji, const Allocator & = Allocator ());

S tem se izdela vektor za obseg [prvi, zadnji) z uporabo določenega razdeljevalca, ki bo obravnavan kasneje v tem članku.

Uničenje vektorja

Če želite uničiti vektor, preprosto dovolite, da izstopi iz obsega, in uničenje se obdeluje samodejno.

Vektorska zmogljivost

size_type capacity () const noexcept

Funkcija člana kapacitete vrne skupno število elementov, ki jih vektor lahko zadrži, ne da bi bilo treba prerazporediti. Kodni segment za to je naslednji:

vektor vtr (4);
int num = vtr.zmogljivost ();
cout << num << '\n';

Izhod je 4.

rezerva (n)

Prostor za pomnilnik ni vedno prosto dostopen. Dodatni prostor lahko rezervirate vnaprej. Upoštevajte naslednji segment kode:

vektor vtr (4);
vtr.rezerva (6);
cout << vtr.capacity() << '\n';

Izhod je 6. Torej, dodaten rezerviran prostor je 6 - 4 = 2 elementa. Funkcija vrne void.

size () const noexcept

To vrne število elementov v vektorju. Naslednja koda ponazarja to funkcijo:

vektor vtr (4);
plovec sz = vtr.velikost ();
cout << sz << '\n';

Izhod je 4.

shrink_to_fit ()

Potem ko vektorju s funkcijo reserve () dodelite dodatno zmogljivost, lahko vektor pomanjšate tako, da ustreza njegovi prvotni velikosti. Naslednja koda to ponazarja:

vektor vtr (4);
vtr.rezerva (6);
vtr.shrink_to_fit ();
int sz = vtr.velikost ();
cout << sz << '\n';

Izhod je 4 in ne 6. Funkcija vrne void.

velikost (sz), velikost (sz, c)

S tem spremenite velikost vektorja. Če je nova velikost manjša od stare, se elementi proti koncu izbrišejo. Če je nova velikost daljša, se proti koncu doda privzeta vrednost. Če želite dodati določeno vrednost, uporabite funkcijo resize () z dvema argumentoma. Naslednji segment kode ponazarja uporabo teh dveh funkcij:

vektor vtr1 1.1, 2.2, 3.3, 4.4;
vtr1.velikost (2);
cout << "New size of vtr1: " << vtr1.size() << '\n';
vektor vtr2 1.1, 2.2;
vtr2.velikost (4, 8.8);
cout << "vtr2: "<< vtr2[0] <<" "<< vtr2[1] <<"
"<< vtr2[2] <<" "<< vtr2[3] << '\n';

Rezultat je naslednji:

Nova velikost vtr1: 2
vtr2: 1.1 2.2 8.8 8.8

Funkcije se vrnejo v prazno.

prazno () const noexcept

Ta funkcija vrne 1 za true, če v vektorju ni elementov in 0 za false, če je vektor prazen. Če ima vektor 4 lokacije za določeno vrsto podatkov, na primer float, brez kakršne koli float vrednosti, potem ta vektor ni prazen. Naslednja koda to ponazarja:

vektor vtr;
cout << vtr.empty() << '\n';
vektor vt (4);
cout << vt.empty() << '\n';
vektor v (4,3.5);
cout << v.empty() << '\n';

Rezultat je naslednji:

1
0
0

Dostop do vektorskih elementov

Vektor lahko podpišemo (indeksiramo) kot matriko. Štetje indeksa se začne od nič.

vectorName [i]

Operacija “vectorName [i]” vrne sklic na element na ith indeks vektorja. Naslednja izhodna koda 3.3 za zgornji vektor:

vektor vtr 1.1, 2.2, 3.3, 4.4;
float fl = vtr [2];
cout << fl << '\n';

vectorName [i] const

Operacija “vectorName [i] const” se izvede namesto “vectorName [i]”, kadar je vektor konstantni vektor. Ta postopek se uporablja v naslednji kodi:

const vektor vtr 1.1, 2.2, 3.3, 4.4;
float fl = vtr [2];
cout << fl << '\n';

Izraz vrne konstantno sklicevanje na ith element vektorja.

Dodelitev vrednosti s podpisom

Vrednost je mogoče dodeliti nestalnemu vektorju, kot sledi:

vektor vtr 1.1, 2.2, 3.3, 4.4;
vtr [2] = 8.8;
cout << vtr[2] << '\n';

Izhod je 8.8.

vectorName.ob (i)

“VektorName.at (i) "je kot" vectorName [i] ", vendar" vectorName.at (i) "je bolj zanesljiv. Naslednja koda prikazuje, kako je treba uporabiti ta vektor:

vektor vtr 1.1, 2.2, 3.3, 4.4;
float fl = vtr.pri (2);
cout << fl << '\n';
at () je vektorska funkcija člana.

vectorName.pri (i) const

“VektorName.at (i) const "je kot" vectorName [i] const ", vendar" vectorName.at (i) const "je bolj zanesljiv. “VektorName.at (i) const "se izvede namesto" vectorName.pri (i) ", ko je vektor konstantni vektor. Ta vektor se uporablja v naslednji kodi:

const vektor vtr 1.1, 2.2, 3.3, 4.4;
float fl = vtr.pri (2);
cout << fl << '\n';
at () const je vektorska funkcija člana.

Dodelitev vrednosti s funkcijo at ()

Vrednost je mogoče dodeliti nestalnemu vektorju s funkcijo at (), kot sledi:

vektor vtr 1.1, 2.2, 3.3, 4.4;
vtr.pri (2) = 8.8;
cout << vtr[2] << '\n';

Izhod je 8.8.

Težava s pod-skriptiranjem

Težava pri pod-skriptiranju (indeksiranju) je, da če je indeks izven obsega, se lahko vrne nič ali se med izvajanjem izda napaka.

spredaj ()

To vrne sklic na prvi element vektorja, ne da bi ga odstranili. Rezultat naslednje kode je 1.1.

vektor vtr 1.1, 2.2, 3.3, 4.4;
float fl = vtr.spredaj ();
cout << fl << '\n';

Element ni odstranjen iz vektorja.

spredaj () const

Kadar je pred vektorsko konstrukcijo const, se namesto „front () izvede izraz“ front () const ”."To se uporablja v naslednji kodi:

const vektor vtr 1.1, 2.2, 3.3, 4.4;
float fl = vtr.spredaj ();
cout << fl << '\n';

Vrne se stalna referenca. Element ni odstranjen iz vektorja.

nazaj ()

To vrne sklic na zadnji element vektorja, ne da bi ga odstranili. Rezultat naslednje kode je 4.4.

vektor vtr 1.1, 2.2, 3.3, 4.4;
float fl = vtr.nazaj ();
cout << fl << '\n';

back () const

Kadar je pred vektorsko konstrukcijo const, se namesto „back () izvede izraz" back () const "."To se uporablja v naslednji kodi:

const vektor vtr 1.1, 2.2, 3.3, 4.4;
float fl = vtr.nazaj ();
cout << fl << '\n';

Vrne se stalna referenca. Element ni odstranjen iz vektorja.

Dostop do vektorskih podatkov

data () noexcept; data () const noexcept;

Vsako od teh vrne kazalec, tako da je [data (), data () + size ()) veljaven obseg.

To bo podrobneje zajeto v nadaljevanju članka.

Vrnitev iteratorjev in vektor

Ponavljalec je kot kazalec, vendar ima več funkcionalnosti kot kazalec.

begin () noexcept

Vrne iterator, ki kaže na prvi element vektorja, kot v naslednjem segmentu kode:

vektor vtr 1.1, 2.2, 3.3, 4.4;
vektor:: iterator iter = vtr.začeti();
cout << *iter << '\n';

Izhod je 1.1. Upoštevajte, da je bila deklaracija, ki prejme iterator, deklarirana. Iterator je v povratnem izrazu razporejen za pridobitev vrednosti na enak način, kot je razporejen kazalec.

begin () const noexcept;

Vrne iterator, ki kaže na prvi element vektorja. Kadar je pred vektorsko konstrukcijo const, se namesto „start () izvede izraz“ begin () const ”.”Pod tem pogojem ustreznega elementa v vektorju ni mogoče spremeniti. To se uporablja v naslednji kodi:

const vektor vtr 1.1, 2.2, 3.3, 4.4;
vektor:: const_iterator iter = vtr.začeti();
cout << *iter << '\n';

Izhod je 1.1. Upoštevajte, da je bil za prejem vrnjenega iteratorja tokrat uporabljen »const_iterator« namesto le »iterator«.

end () noexcept

Vrne iterator, ki kaže neposredno nad zadnji element vektorja. Upoštevajte naslednji segment kode:

vektor vtr 1.1, 2.2, 3.3, 4.4;
vektor:: iterator iter = vtr.konec ();
cout << *iter << '\n';

Izhod je 0, kar je nesmiselno, saj ni nobenega konkretnega elementa onkraj zadnjega elementa.

end () const noexcept

Vrne iterator, ki kaže neposredno nad zadnji element vektorja. Kadar je pred vektorsko konstrukcijo "const", se namesto "end () izvede izraz" end () const ".”Upoštevajte naslednji segment kode:

const vektor vtr 1.1, 2.2, 3.3, 4.4;
vektor:: const_iterator iter = vtr.konec ();
cout << *iter << '\n';

Izhod je 0. Upoštevajte, da je bil za prejem vrnjenega iteratorja tokrat uporabljen »const_iterator« namesto le »iterator«.

Povratna ponovitev

Možen je iterator, ki se ponovi od konca do tik pred prvim elementom.

rbegin () noexcept

Vrne iterator, ki kaže na zadnji element vektorja, kot v naslednjem segmentu kode:

vektor vtr 1.1, 2.2, 3.3, 4.4;
vektor:: reverse_iterator rIter = vtr.rbegin ();
cout << *rIter << '\n';

Izhod je 4.4.

Upoštevajte, da je bila deklaracija, ki prejme povratni iterator, deklarirana. Iterator je v povratnem izrazu razporejen za pridobitev vrednosti na enak način, kot je razporejen kazalec.

rbegin () const noexcept;

Vrne iterator, ki kaže na zadnji element vektorja. Kadar je pred vektorsko konstrukcijo "const", se namesto "rbegin () izvede izraz" rbegin () const ".”Pod tem pogojem ustreznega elementa v vektorju ni mogoče spremeniti. Ta funkcija je uporabljena v naslednji kodi:

const vektor vtr 1.1, 2.2, 3.3, 4.4;
vektor:: const_reverse_iterator rIter = vtr.rbegin ();
cout << *rIter << '\n';

Izhod je 4.4.

Upoštevajte, da je bil const_reverse_iterator tokrat namesto samo reverse_iterator uporabljen za prejemanje vrnjenega iteratorja.

rend () noexcept

Vrne iterator, ki kaže tik pred prvim elementom vektorja. Upoštevajte naslednji segment kode:

vektor vtr 1.1, 2.2, 3.3, 4.4;
vektor:: reverse_iterator rIter = vtr.rend ();
cout << *rIter << '\n';

Rezultat je 0, kar je nesmiselno, saj tik pred prvim elementom ni konkretnega elementa.

rend () const noexcept

Vrne iterator, ki kaže tik pred prvim elementom vektorja. Kadar je pred vektorsko konstrukcijo "const", se namesto "rend () izvede izraz" rend () const ".”Upoštevajte naslednji segment kode:

const vektor vtr 1.1, 2.2, 3.3, 4.4;
vektor:: const_reverse_iterator rIter = vtr.rend ();
cout << *rIter << '\n';

Izhod je 0.

Upoštevajte, da je bil const_reverse_iterator tokrat namesto samo reverse_iterator uporabljen za prejemanje vrnjenega iteratorja.

Vektorski modifikatorji

Modifikator, ki spreminja vektor, lahko sprejme ali vrne iterator.

a.emplace (p, args)

Vstavi objekt tipa T, zgrajen s std :: forward(args)… pred str.

Za podrobnosti - glej kasneje

vstavi (iteratorPosition, vrednost)

Vstavi kopijo vrednosti na mestu iteratorja vektorja. Vrne iterator (položaj) v vektorju, kamor je bila postavljena kopija. Naslednja koda prikazuje, kje je bila postavljena vrednost:

vektor vtr 10, 20, 30, 40;
vektor:: iterator iter = vtr.začeti();
++iter;
++iter;
vtr.vstavi (iter, 25);
cout << vtr[1] << " << vtr[2]<< '
" << vtr[3] << '\n';

Rezultat je: 20 25 30.

Upoštevajte, da je bil iterator napreden (povečan) tako kot kazalec.

Vstavite lahko tudi seznam inicializatorja, kot ponazarja naslednja koda:

vektor vtr 10, 20, 30, 40;
vektor:: iterator iter = vtr.začeti();
++iter;
++iter;
vtr.vstavi (iter, 25, 28);
cout << vtr[1] << " << vtr[2]<< '
" << vtr[3]<< " << vtr[4] << '\n';

Rezultat je: 20 25 28 30.

izbriši (položaj)

Odstrani element v položaju, na katerega kaže iterator, nato pa vrne položaj iteratorja. Naslednja koda to ponazarja:

vektor vtr 10, 20, 30, 40;
vektor:: iterator iter = vtr.začeti();
++iter;
++iter;
vtr.izbriši (iter);
cout << vtr[0] << " << vtr[1] << '
" << vtr[2]<< '\n';

Izhod je: 10 20 40

push_back (t), push_back (rv)

Uporablja se za dodajanje posameznega elementa na koncu vektorja. Uporabite push_back (t), kot sledi:

vektor vtr 1.1, 2.2, 3.3, 4.4;
vtr.push_back (5.5);
plovec fl = vtr [4];
cout << fl << '\n';

Izhod je 5.5.

push_back (rv): - glej kasneje.

pop_back ()

Odstrani zadnji element, ne da bi ga vrnil. Velikost vektorja se zmanjša za 1. Naslednja koda to ponazarja:

vektor vtr 1.1, 2.2, 3.3, 4.4;
vtr.pop_back ();
plovec sz = vtr.velikost ();
cout << sz << '\n';

Izhod je 3.

a.zamenjava (b)

Dva vektorja je mogoče zamenjati, kot je prikazano v naslednjem segmentu kode:

vektor vtr1 1.1, 2.2, 3.3, 4.4;
vektor vtr2 10, 20;
vtr1.zamenjaj (vtr2);
cout << "vtr1: "<< vtr1[0] <<" "<< vtr1[1] <<"
"<< vtr1[2] <<" "<< vtr1[3] << '\n';
cout << "vtr2: "<< vtr2[0] <<" "<< vtr2[1] <<"
"<< vtr2[2] <<" "<< vtr2[3] << '\n';

Rezultat je:

vtr1: 10 20 0 0
vtr2: 1.1 2.2 3.3 4.4

Po potrebi se dolžina vektorja poveča. Vrednosti, ki niso imele zamenjav, se nadomestijo z neko privzeto vrednostjo.

jasno ()

Odstrani vse elemente iz vektorja, kot ponazarja naslednji segment kode:

vektor vtr 1.1, 2.2, 3.3, 4.4;
vtr.jasno ();
cout << vtr.size() << '\n';

Izhod je 0.

Operaterji enakosti in relacije za vektorje

Operater ==

Vrne 1 za true, če imata vektorja enako velikost in sta ustrezna elementa enaka; v nasprotnem primeru vrne 0 za false. Na primer:

vektor U 1, 2, 3;
vektor V 4, 5, 6;
bool bl = U == V;
cout << bl << '\n';

Izhod je 0.

The != Operater

Vrne 1 za true, če vektorja nimata enake velikosti in / ali ustrezni elementi niso enaki; v nasprotnem primeru vrne 0 za false. Na primer:

vektor U 1, 2, 3;
vektor V 4, 5, 6;
bool bl = U!= V;
cout << bl << '\n';

Izhod je 1.

The < Operator

Vrne 1 za true, če je prvi vektor začetna podskupina drugega vektorja, pri čemer so elementi obeh enakih delov enaki in v istem vrstnem redu. Če sta oba vektorja enake velikosti in se premikata od leve proti desni in v prvem vektorju naletimo na element, ki je manjši od ustreznega elementa v drugem vektorju, bo 1 še vedno vrnjen. V nasprotnem primeru se vrne 0 za false. Na primer:

vektor U 3, 1, 1;
vektor V 3, 2, 1;
bool bl = Ucout << bl << '\n';

Izhod je 1. < does not include the case when the size and order are the same.

> Operater

Vrne !(U < V), where U is the first vector and V is the second vector, according to the above definitions.

The <= Operator

Vrne U <= V, where U is the first vector and V is the second vector, according to the above definitions.

Operater> =

Vrne !(U <= V), where U is the first vector and V is the second vector, according to the above definitions.

Zaključek

Vektor je primer vsebnika zaporedja. Vektor je "boljša" oblika navadnega polja in se ustvari iz razreda. Vektorji imajo metode, ki so razvrščene pod: konstrukcija in dodelitev, zmogljivost, dostop do elementov, dostop do podatkov, iteratorji, modifikatorji in numerični preobremenjeni operaterji.

Obstajajo tudi drugi zabojniki zaporedja, imenovani seznam, posredovani_list in matrika. Če opravilo vključuje pogoste vstavitve in brisanja sredi zaporedja, je treba uporabiti seznam ali naprej_list. Če opravilo vključuje pogoste vstavitve in brisanja na začetku ali koncu zaporedja, potem uporabite deque. Torej, vektorje je treba uporabljati le, kadar tovrstne operacije niso pomembne.

Kako prikazati števec FPS v igrah Linux
Linux gaming je dobil velik zagon, ko je Valve leta 2012 napovedal podporo Linuxu za odjemalca Steam in njihove igre. Od takrat se je veliko AAA in in...
Kako prenesti in igrati Sid Meier's Civilization VI v Linuxu
Uvod v igro Civilization 6 je sodoben pogled na klasični koncept, uveden v seriji iger Age of Empires. Ideja je bila dokaj preprosta; začeli bi v zelo...
Kako namestiti in igrati Doom v Linuxu
Uvod v Doom Serija Doom je nastala v devetdesetih letih po izidu prvotnega Dooma. Bil je takojšen hit in od takrat naprej je serija iger prejela števi...