Kaip naudotis „C ++ Vector“

How Use C Vector



Įvadas

Masyvas yra tų pačių objektų tipų serija iš eilės atminties vietose. Masyvas negali padidinti rūdos sumažinimo ilgio. Vektorius yra tarsi masyvas, tačiau jo ilgį galima padidinti arba sumažinti. Todėl vektorius turi daug daugiau operacijų nei masyvas.

„C ++“ turi daug bibliotekų, kurios visos sudaro standartinę „C ++“ biblioteką. Viena iš šių bibliotekų yra konteinerių biblioteka. Talpykla yra objektų rinkinys, o su kolekcija galima atlikti tam tikras operacijas. C ++ konteinerius galima sugrupuoti į du rinkinius: sekos konteinerius ir asociatyvius konteinerius. Sekos konteineriai yra vektorius, masyvas (ne tas pats masyvas, apie kurį buvo kalbėta anksčiau), deque, forward_list ir list. Tai yra skirtingos kolekcijos (į masyvą panašios duomenų struktūros) ir kiekviena iš jų siūlo skirtingus kompromisus.







Bet kuris programuotojas turėtų žinoti, kaip nuspręsti, ar naudoti vektorių, masyvą, deką, „forward_list“ ar sąrašą. Kai programuotojui reikia struktūros, kuri reikalauja daugiau operacijų nei tos, kurios yra susijusios su įprastu masyvu, įprastas masyvas neturėtų būti naudojamas.



Jei užduotis apima dažną įterpimą ir ištrynimą sekos viduryje, tuomet reikia naudoti sąrašą arba „forward_list“. Jei užduotis apima dažną įterpimą ir ištrynimą sekos pradžioje ar pabaigoje, tuomet reikia naudoti deką. Kai tokių operacijų atlikti nereikia, reikia naudoti vektorių.



Šis straipsnis parodo, kaip naudoti C ++ vektorių. Norėdami suprasti šį straipsnį, jums reikės tam tikrų žinių apie C ++ rodykles, nuorodas ir masyvus.





Klasė ir objektai

Klasė yra kintamųjų ir funkcijų, veikiančių kartu, rinkinys, kai kintamiesiems nėra priskirtos vertės. Kai kintamiesiems priskiriamos vertės, klasė tampa objektu. Skirtingos tos pačios klasės vertės suteikia skirtingus objektus; tai yra, skirtingi objektai gali būti tos pačios klasės, tačiau turėti skirtingas vertes. Objekto sukūrimas iš klasės taip pat žinomas kaip objekto parodymas.

Terminas vektorius apibūdina klasę. Objektas, sukurtas iš vektoriaus, turi pavadinimą, kurį pasirenka programuotojas.



Funkcija, priklausanti klasei, reikalinga objektui iš klasės išvesti. C ++ ta funkcija turi tą patį pavadinimą kaip ir klasės pavadinimas. Skirtingi iš klasės sukurti (atkurti) objektai turi skirtingus pavadinimus, kuriuos kiekvienam suteikė programuotojas.

Sukurti objektą iš klasės reiškia objekto konstravimą; tai taip pat reiškia objekto momentavimą.

Vektoriaus klasė

Vektorių klasė jau apibrėžta ir yra bibliotekoje. Norėdami naudoti vektorių klasę, programuotojas turi įtraukti vektoriaus antraštę į failą su šia išankstinio apdorojimo direktyva:

#įtraukti

Įtraukus antraštę, bus pasiekiamos visos vektorinės funkcijos (duomenų nariai ir narių funkcijos). Norint naudoti skaičiavimo objektą duomenims išvesti į terminalą (konsolę), taip pat turi būti įtraukta objekto antraštė. Norėdami parašyti programą bent jau su vektoriu, turi būti įtrauktos šios antraštės:

#įtraukti
#įtraukti

Vektoriaus diegimas

tarptkvailys[10];

Aukščiau yra masyvo deklaracija su pavadinimu foo ir elementų skaičius 10. Tai yra sveikųjų skaičių masyvas. Vektoriaus deklaracija yra panaši. Vektoriui elementų skaičius neprivalomas, nes vektoriaus ilgis gali padidėti arba sumažėti.

Šiuo programos momentu vektorinė klasė jau buvo apibrėžta bibliotekoje, o antraštė įtraukta. Vektorių galima parodyti taip:

valandų::vektorius <tarpt>vtr(8);

Čia vektorius atlieka specialią konstruktoriaus funkciją. Duomenų, kuriuos vektorius laikys, tipas yra int, kampo skliausteliuose. Terminas vtr yra programuotojo pasirinktas vektoriaus pavadinimas. Galiausiai 8 skliausteliuose yra preliminarus sveikųjų skaičių skaičius, kurį turės vektorius.

Terminas std reiškia standartinę vardų sritį. Šiame kontekste po šio termino turi būti dviguba dvitaškis. Kiekvienas gali parašyti savo vektorinių klasių biblioteką ir ja naudotis. Tačiau „C ++“ jau turi standartinę biblioteką su standartiniais pavadinimais, įskaitant vektorių. Norint naudoti standartinį pavadinimą, prieš standartinį pavadinimą turi būti std ::. Kad programoje nerašytumėte standartinio pavadinimo std ::, programos failas gali prasidėti taip:

#įtraukti
#įtraukti
naudojant vardų srities standartą;

Funkcijos perkrovimas

Kai du ar daugiau skirtingų funkcijų parašų turi tą patį pavadinimą, sakoma, kad tas pavadinimas yra perkrautas. Kai iškviečiama viena funkcija, argumentų skaičius ir tipas nustato, kuri funkcija vykdoma.

Vektoriaus konstravimas

Vektoriaus konstravimas reiškia vektorinio objekto momentinį sukūrimą (sukūrimą). Konstruktoriaus funkcija yra perkrauta taip:

vektoriaus pavadinimas

Taip sukuriamas nulio ilgio ir T. tipo vektorius. Toliau pateiktas teiginys sukuria nulinio ilgio vektorių tipo plūdės pavadinimu vtr:

vektorius<plūdė>vtr;

vektoriaus pavadinimas (n)

Taip sukuriamas vektorius su n T tipo elementais. Šio vektoriaus teiginys su keturiais plūdės elementais yra toks:

vektorius<plūdė>vtr(4);

vektoriaus pavadinimas (n, t)

Taip sukuriamas n elementų vektorius, inicijuotas iki reikšmės t. Šis teiginys sukuria 5 elementų vektorių, kur kiekvieno elemento vertė yra 3,4:

vektorius<plūdė>vtr(5, 3.4);

Konstrukcija su inicializacija

Vektorių galima sukurti (sukurti) ir inicijuoti vienu metu vienu iš šių dviejų būdų:

vektorius<plūdė>vtr= {1.1, 2.2, 3.3, 4.4};

Arba

vektorius<plūdė>vtr{1.1, 2.2, 3.3, 4.4};

Atminkite, kad skliausteliuose nėra tik objekto pavadinimo. Skliausteliuose, naudojamuose iškart po objekto pavadinimo, turėtų būti toks inicializatorių sąrašas:

vektorius<plūdė>vtr({1.1, 2.2, 3.3, 4.4});

Vektorių galima sukurti ir inicijuoti vėliau naudojant inicializatorių sąrašą. Tokiu atveju skliausteliai nebus naudojami:

vektorius<plūdė>vtr;
vtr= {1.1, 2.2, 3.3, 4.4};

vektorius V2 (V1)

Tai kopijų konstruktorius. Jis sukuria vektorių V2 kaip vektoriaus V1 kopiją. Toliau pateiktas kodas tai iliustruoja:

vektorius<plūdė>vtr1(5, 3.4);
vektorius<plūdė>vtr2(vtr1);

Vektoriaus priskyrimas statybos metu

Statybos metu galima sukurti tuščią vektorių, o jam priskirti kitą:

vektorius<plūdė>vtr1{1.1, 2.2, 3.3, 4.4};
vektorius<plūdė>vtr2=vtr1;

Antrasis teiginys yra lygus:

vektorius<plūdė>vtr2= {1.1, 2.2, 3.3, 4.4};

const Vektorius

Const vektorius yra vektorius, kurio elementų negalima pakeisti. Šio vektoriaus vertės yra tik skaitomos. Sukurtas vektorius atrodo taip:

konstvektorius<plūdė>vtr{1.1, 2.2, 3.3, 4.4};

Šio tipo vektoriaus atveju negalima pridėti ar pašalinti jokių elementų. Be to, jokios vertės pakeisti negalima.

Konstrukcija naudojant „Iterator“

Šablonas pateikia bendrą duomenų tipo vaizdą. Iteratorius pateikia bendrą nuskaitymo per sudėtinio rodinio vaizdą vaizdą. Vektoriaus su iteratoriumi kūrimo sintaksė yra tokia:

šabloną<klasės „InputIterator“>
vektorius(Pirmiausia „InputIterator“,„InputIterator“ paskutinis,konstSkirstytuvas& =Skirstytuvas());

Tai sukuria diapazono vektorių [pirmasis, paskutinis], naudojant nurodytą skirstytuvą, kuris bus aptartas vėliau šiame straipsnyje.

Vektoriaus sunaikinimas

Norėdami sunaikinti vektorių, tiesiog leiskite jam išeiti iš taikymo srities ir sunaikinimas atliekamas automatiškai.

Vektorinis pajėgumas

size_type capacity () const noexcept

Bendras elementų skaičius, kurį vektorius gali turėti nereikalaudamas perskirstymo, grąžina pajėgumo nario funkcija. Tam skirtas kodo segmentas yra toks:

vektorius<plūdė>vtr(4);
tarptant vieno=vtr.talpa();
kaina<<ant vieno<< ' n';

Išėjimas yra 4.

rezervas (n)

Atminties vieta ne visada yra laisvai prieinama. Papildomą vietą galima rezervuoti iš anksto. Apsvarstykite šį kodo segmentą:

vektorius<plūdė>vtr(4);
vtr.rezervas(6);
kaina<<vtr.talpa() << ' n';

Išėjimas yra 6. Taigi, papildoma rezervuota vieta yra 6 - 4 = 2 elementai. Funkcija grąžina tuščią.

size () const noexcept

Tai grąžina vektoriaus elementų skaičių. Šis kodas iliustruoja šią funkciją:

vektorius<plūdė>vtr(4);
plūdės=vtr.dydžio();
kaina<<s<< ' n';

Išėjimas yra 4.

Sumažinti, kad tilptų()

Suteikus papildomą pajėgumą vektoriui su rezervo () funkcija, vektoriaus dydį galima sumažinti, kad jis atitiktų pradinį dydį. Toliau pateiktas kodas tai iliustruoja:

vektorius<plūdė>vtr(4);
vtr.rezervas(6);
vtr.Sumažinti, kad tilptų();
tarpts=vtr.dydžio();
kaina<<s<< ' n';

Išvestis yra 4, o ne 6. Funkcija grąžina tuščią.

keisti dydį (sz), keisti dydį (sz, c)

Tai pakeičia vektoriaus dydį. Jei naujas dydis yra mažesnis nei senas, tada pabaigos elementai ištrinami. Jei naujas dydis yra ilgesnis, pabaigoje pridedama tam tikra numatytoji vertė. Norėdami gauti tam tikrą pridėtinę vertę, naudokite funkciją resize () su dviem argumentais. Šis kodo segmentas iliustruoja šių dviejų funkcijų naudojimą:

vektorius<plūdė>vtr1{1.1, 2.2, 3.3, 4.4};
vtr1.pakeisti dydį(2);
kaina<< 'Naujas vtr1 dydis:' <<vtr1.dydžio() << ' n';
vektorius<plūdė>vtr2{1.1, 2.2};
vtr2.pakeisti dydį(4, 8.8);
kaina<< 'vtr2:'<<vtr2[0] <<''<<vtr2[1] <<'
'
<<vtr2[2] <<''<<vtr2[3] << ' n';

Išėjimas yra toks:

Naujas vtr1: 2 dydis
vtr2: 1.1 2.2 8.8 8.8

Funkcijos grįžta tuščios.

empty () const noexcept

Ši funkcija grąžina 1, jei tiesa, jei vektoriuje nėra elementų, o 0 - klaidinga, jei vektorius yra tuščias. Jei vektorius turi 4 vietas tam tikro tipo duomenims, pvz., Plūdės, be jokios plūdės vertės, tada šis vektorius nėra tuščias. Toliau pateiktas kodas tai iliustruoja:

vektorius<plūdė>vtr;
kaina<<vtr.tuščia() << ' n';
vektorius<plūdė>vt(4);
kaina<<taip kadtuščia() << ' n';

vektorius<plūdė>v(4,3.5);
kaina<<v.tuščia() << ' n';

Išėjimas yra toks:

1
0
0

Prieiga prie vektorinio elemento

Vektorius gali būti subkriptuotas (indeksuotas) kaip masyvas. Indekso skaičiavimas prasideda nuo nulio.

vektorinis pavadinimas [i]

Operacija vectorName [i] grąžina nuorodą į elementą itūkstvektoriaus indeksas. Šie kodo išėjimai 3.3 nurodytam vektoriui:

vektorius<plūdė>vtr{1.1, 2.2, 3.3, 4.4};
plūdėfl=vtr[2];
kaina<<fl<< ' n';

vektorinis pavadinimas [i] konst

Operacija vectorName [i] const vykdoma vietoj vectorName [i], kai vektorius yra pastovus vektorius. Ši operacija naudojama pagal šį kodą:

konstvektorius<plūdė>vtr{1.1, 2.2, 3.3, 4.4};
plūdėfl=vtr[2];
kaina<<fl<< ' n';

Išraiška grąžina nuolatinę nuorodą į itūkstvektoriaus elementas.

Vertės priskyrimas naudojant indeksą

Vertę galima priskirti nekintamam vektoriui taip:

vektorius<plūdė>vtr{1.1, 2.2, 3.3, 4.4};
vtr[2] = 8.8;
kaina<<vtr[2] << ' n';

Rezultatas yra 8,8.

vectorName.at (i)

vectorName.at (i) yra kaip vectorName [i], bet vectorName.at (i) yra patikimesnis. Šis kodas parodo, kaip turėtų būti naudojamas šis vektorius:

vektorius<plūdė>vtr{1.1, 2.2, 3.3, 4.4};
plūdėfl=vtr.adresu(2);
kaina<<fl<< ' n';
adresu()yra vektorinis narysfunkcija.

vectorName.at (i) const

vectorName.at (i) const yra kaip vectorName [i] const, bet vectorName.at (i) const yra patikimesnis. vectorName.at (i) const vykdomas vietoj vectorName.at (i), kai vektorius yra pastovus vektorius. Šis vektorius naudojamas tokiu kodu:

konstvektorius<plūdė>vtr{1.1, 2.2, 3.3, 4.4};
plūdėfl=vtr.adresu(2);
kaina<<fl<< ' n';
adresu() konstyra vektorinis narysfunkcija.

Vertės priskyrimas funkcijai at ()

Vertę galima priskirti nekintamam vektoriui, naudojant funkciją at (), taip:

vektorius<plūdė>vtr{1.1, 2.2, 3.3, 4.4};
vtr.adresu(2) = 8.8;
kaina<<vtr[2] << ' n';

Rezultatas yra 8,8.

Subkriptų problema

Antrinio scenarijaus (indeksavimo) problema yra ta, kad jei indeksas yra už diapazono ribų, gali būti grąžintas nulis arba vykdymo metu gali būti pateikta klaida.

priekis ()

Tai grąžina nuorodą į pirmąjį vektoriaus elementą, nepašalinus elemento. Šio kodo išvestis yra 1.1.

vektorius<plūdė>vtr{1.1, 2.2, 3.3, 4.4};
plūdėfl=vtr.priekyje();
kaina<<fl<< ' n';

Elementas nepašalinamas nuo vektoriaus.

priekis () konst

Kai prieš vektoriaus konstrukciją yra const, vietoj front () vykdoma išraiška front () const. Tai naudojama šiame kode:

konstvektorius<plūdė>vtr{1.1, 2.2, 3.3, 4.4};
plūdėfl=vtr.priekyje();
kaina<<fl<< ' n';

Pateikiama nuolatinė nuoroda. Elementas nepašalinamas nuo vektoriaus.

atgal ()

Tai grąžina nuorodą į paskutinį vektoriaus elementą, nepašalinus elemento. Šio kodo išvestis yra 4.4.

vektorius<plūdė>vtr{1.1, 2.2, 3.3, 4.4};
plūdėfl=vtr.atgal();
kaina<<fl<< ' n';

atgal () konst

Kai prieš vektoriaus konstrukciją yra const, vietoj back () vykdoma išraiška back () const. Tai naudojama šiame kode:

konstvektorius<plūdė>vtr{1.1, 2.2, 3.3, 4.4};
plūdėfl=vtr.atgal();
kaina<<fl<< ' n';

Pateikiama nuolatinė nuoroda. Elementas nepašalinamas nuo vektoriaus.

Prieiga prie vektorinių duomenų

data () noexcept; data () const noexcept;

Bet kuris iš jų grąžina rodyklę, kad [data (), data () + size ()) būtų tinkamas diapazonas.

Tai bus išsamiau aptarta vėliau straipsnyje.

Grįžtantys kartotojai ir vektorius

Iteratorius yra kaip rodyklė, tačiau turi daugiau funkcijų nei rodyklė.

begin () noexcept

Grąžina iteratorių, kuris nurodo į pirmąjį vektoriaus elementą, kaip nurodyta šiame kodo segmente:

vektorius<plūdė>vtr{1.1, 2.2, 3.3, 4.4};
vektorius<plūdė> ::iteratoriusiter=vtr.pradėti();
kaina<< *iter<< ' n';

Rezultatas yra 1.1. Atminkite, kad deklaracija, kuri gauna iteratorių, buvo paskelbta. Iteratoriaus nuoroda išjungiama grįžtamojoje išraiškoje, norint gauti vertę taip pat, kaip ir žymeklio nuoroda.

begin () const noexcept;

Grąžina iteratorių, nurodantį pirmąjį vektoriaus elementą. Kai prieš vektoriaus konstrukciją yra const, vietoj begin () vykdoma išraiška begin () const. Esant tokioms sąlygoms, atitinkamo vektoriaus elemento negalima keisti. Tai naudojama šiame kode:

konstvektorius<plūdė>vtr{1.1, 2.2, 3.3, 4.4};
vektorius<plūdė> ::const_iteratoriter=vtr.pradėti();
kaina<< *iter<< ' n';

Rezultatas yra 1.1. Atminkite, kad grąžintam iteratoriui gauti šį kartą buvo naudojamas „const_iterator“, o ne tik iteratorius.

end () noexcept

Grąžina iteratorių, kuris nukreipia tiesiai už paskutinio vektoriaus elemento. Apsvarstykite šį kodo segmentą:

vektorius<plūdė>vtr{1.1, 2.2, 3.3, 4.4};
vektorius<plūdė> ::iteratoriusiter=vtr.galas();
kaina<< *iter<< ' n';

Išvestis yra 0, o tai yra beprasmiška, nes nėra konkretaus elemento už paskutinio elemento.

end () const noexcept

Grąžina iteratorių, kuris nukreipia tiesiai už paskutinio vektoriaus elemento. Kai prieš vektoriaus konstrukciją yra const, vietoj end () vykdoma išraiška end () const. Apsvarstykite šį kodo segmentą:

konstvektorius<plūdė>vtr{1.1, 2.2, 3.3, 4.4};
vektorius<plūdė> ::const_iteratoriter=vtr.galas();
kaina<< *iter<< ' n';

Išvestis yra 0. Atkreipkite dėmesį, kad grąžintam iteratoriui priimti šį kartą vietoj iteratoriaus buvo naudojamas const_iterator.

Atvirkštinis kartojimas

Galima turėti iteratorių, kuris kartojasi nuo galo iki pat pirmojo elemento.

rbegin () išimtis

Grąžina iteratorių, kuris nurodo į paskutinį vektoriaus elementą, kaip nurodyta šiame kodo segmente:

vektorius<plūdė>vtr{1.1, 2.2, 3.3, 4.4};
vektorius<plūdė> ::reverse_iteratorsenesnis=vtr.rbegin();
kaina<< *senesnis<< ' n';

Rezultatas yra 4,4.

Atminkite, kad deklaracija, kuri gauna atvirkštinį iteratorių, buvo paskelbta. Iteratoriaus nuoroda išjungiama grįžtamojoje išraiškoje, norint gauti vertę taip pat, kaip ir žymeklio nuoroda.

rbegin () const noexcept;

Grąžina iteratorių, kuris nurodo paskutinį vektoriaus elementą. Kai prieš vektoriaus konstrukciją yra const, vietoj rbegin () vykdoma išraiška rbegin () const. Esant tokioms sąlygoms, atitinkamo vektoriaus elemento negalima keisti. Ši funkcija naudojama šiame kode:

konstvektorius<plūdė>vtr{1.1, 2.2, 3.3, 4.4};
vektorius<plūdė> ::const_reverse_iteratorsenesnis=vtr.rbegin();
kaina<< *senesnis<< ' n';

Rezultatas yra 4,4.

Atminkite, kad grąžintam iteratoriui gauti šį kartą buvo naudojamas ne „revers_iterator“, o „const_reverse_iterator“.

render () noexcept

Grąžina iteratorių, kuris nurodo prieš pat pirmąjį vektoriaus elementą. Apsvarstykite šį kodo segmentą:

vektorius<plūdė>vtr{1.1, 2.2, 3.3, 4.4};
vektorius<plūdė> ::reverse_iteratorsenesnis=vtr.daro();
kaina<< *senesnis<< ' n';

Išvestis yra 0, o tai yra beprasmiška, nes prieš pat pirmąjį elementą nėra konkretaus elemento.

render () const noexcept

Grąžina iteratorių, kuris nurodo prieš pat pirmąjį vektoriaus elementą. Kai prieš vektoriaus konstrukciją yra const, vietoj rend () vykdoma išraiška rend () const. Apsvarstykite šį kodo segmentą:

konstvektorius<plūdė>vtr{1.1, 2.2, 3.3, 4.4};
vektorius<plūdė> ::const_reverse_iteratorsenesnis=vtr.daro();
kaina<< *senesnis<< ' n';

Išėjimas yra 0.

Atminkite, kad grąžintam iteratoriui gauti šį kartą buvo naudojamas ne „revers_iterator“, o „const_reverse_iterator“.

Vektoriniai modifikatoriai

Modifikatorius, modifikuojantis vektorių, gali paimti arba grąžinti iteratorių.

a. sukurti (p, args)

Įterpia T tipo objektą, sukonstruotą naudojant std :: forward (args)… prieš p.

Išsamiau - žiūrėkite vėliau

įterpti (iteratorPosition, value)

Įterpia vertės kopiją į vektoriaus iteratoriaus vietą. Grąžina iteratorių (poziciją) vektoriuje, kuriame buvo įdėta kopija. Šis kodas rodo, kur buvo padėta vertė:

vektorius<tarpt>vtr{10, dvidešimt, 30, 40};
vektorius<tarpt> ::iteratoriusiter=vtr.pradėti();
++iter;
++iter;
vtr.Įdėti(iter, 25);
kaina<<vtr[1] << '' <<vtr[2]<< '
'
<<vtr[3] << ' n';

Išėjimas yra: 20 25 30.

Atminkite, kad iteratorius buvo išplėstas (padidintas) kaip rodyklė.

Taip pat galima įterpti inicializatorių sąrašą, kaip iliustruoja šis kodas:

vektorius<tarpt>vtr{10, dvidešimt, 30, 40};
vektorius<tarpt> ::iteratoriusiter=vtr.pradėti();
++iter;
++iter;
vtr.Įdėti(iter, {25, 28});

kaina<<vtr[1] << '' <<vtr[2]<< '
'
<<vtr[3]<< '' <<vtr[4] << ' n';

Išėjimas yra: 20 25 28 30.

ištrinti (padėtis)

Pašalina elementą toje vietoje, kurią nurodo iteratorius, tada grąžina iteratoriaus padėtį. Toliau pateiktas kodas tai iliustruoja:

vektorius<tarpt>vtr{10, dvidešimt, 30, 40};
vektorius<tarpt> ::iteratoriusiter=vtr.pradėti();
++iter;
++iter;
vtr.ištrinti(iter);
kaina<<vtr[0] << '' <<vtr[1] << '
'
<<vtr[2]<< ' n';

Išėjimas yra: 10 20 40

„push_back“ (t), „push_back“ (rv)

Naudojamas pridėti vieną elementą vektoriaus pabaigoje. Naudokite „push_back“ (t) taip:

vektorius<plūdė>vtr{1.1, 2.2, 3.3, 4.4};
vtr.pastumti atgal(5.5);
plūdėfl=vtr[4];
kaina<<fl<< ' n';

Rezultatas yra 5,5.

pastumti atgal(rv): -pamatyti vėliau.

pop_back ()

Pašalina paskutinį elementą jo negrąžindamas. Vektoriaus dydis sumažinamas 1. Tai iliustruoja šis kodas:

vektorius<plūdė>vtr{1.1, 2.2, 3.3, 4.4};
vtr.pop_back();
plūdės=vtr.dydžio();
kaina<<s<< ' n';

Išėjimas yra 3.

a. apsikeisti (b)

Galima pakeisti du vektorius, kaip parodyta šiame kodo segmente:

vektorius<plūdė>vtr1{1.1, 2.2, 3.3, 4.4};
vektorius<plūdė>vtr2{10, dvidešimt};
vtr1.apsikeisti(vtr2);
kaina<< 'vtr1:'<<vtr1[0] <<''<<vtr1[1] <<'
'
<<vtr1[2] <<''<<vtr1[3] << ' n';

kaina<< 'vtr2:'<<vtr2[0] <<''<<vtr2[1] <<'
'
<<vtr2[2] <<''<<vtr2[3] << ' n';

Išėjimas yra:

vtr1: 10 dvidešimt 0 0
vtr2: 1.1 2.2 3.3 4.4

Atminkite, kad prireikus vektoriaus ilgis padidinamas. Be to, vertės, kurios nebuvo pakeistos, pakeičiamos tam tikra numatytąja verte.

aišku ()

Pašalina visus elementus iš vektoriaus, kaip parodyta šiame kodo segmente:

vektorius<plūdė>vtr{1.1, 2.2, 3.3, 4.4};
vtr.aišku();
kaina<<vtr.dydžio() << ' n';

Išėjimas yra 0.

Vektorių lygybės ir santykių operatoriai

== Operatorius

Grąžina 1 tiesą, jei abu vektoriai yra vienodo dydžio ir atitinkami elementai yra lygūs; priešingu atveju jis grąžina 0 už klaidingą. Pavyzdžiui:

vektorius<tarpt>U{1, 2, 3};
vektorius<tarpt>V{4, 5, 6};
bool bl=U==V;
kaina<<bl<< ' n';

Išėjimas yra 0.

The! = Operatorius

Grąžina 1 tiesą, jei abu vektoriai nėra vienodo dydžio ir (arba) atitinkami elementai nėra lygūs; priešingu atveju jis grąžina 0 už klaidingą. Pavyzdžiui:

vektorius<tarpt>U{1, 2, 3};
vektorius<tarpt>V{4, 5, 6};
bool bl=U! =V;
kaina<<bl<< ' n';

Išėjimas yra 1.

The

Grąžina 1 tiesą, jei pirmasis vektorius yra pradinis antrojo vektoriaus pogrupis, o dviejų lygių dalių elementai yra vienodi ir ta pačia tvarka. Jei abu vektoriai yra vienodo dydžio ir juda iš kairės į dešinę, o pirmajame vektoriuje susiduriama su elementu, kuris yra mažesnis už atitinkamą antrojo vektoriaus elementą, 1 vis tiek bus grąžintas. Priešingu atveju grąžinamas 0 už klaidingą. Pavyzdžiui:

vektorius<tarpt>U{3, 1, 1};
vektorius<tarpt>V{3, 2, 1};
bool bl=U<V;
kaina<<bl<< ' n';

Išėjimas yra 1.

> Operatorius

Grįžta! (U

The<= Operator

Grąžina U<= V, where U is the first vector and V is the second vector, according to the above definitions.

> = Operatorius

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

Išvada

Vektorius yra sekos sudėtinio rodinio pavyzdys. Vektorius yra geresnė įprasto masyvo forma ir yra atkurtas iš klasės. Vektoriai turi metodus, kurie klasifikuojami pagal: konstrukciją ir priskyrimą, pajėgumą, prieigą prie elementų, prieigą prie duomenų, iteratorius, modifikatorius ir skaitmeninius perkrautus operatorius.

Yra ir kitų sekų talpyklų, vadinamų sąrašu, persiuntimo_raštu ir masyvu. Jei užduotis apima dažną įterpimą ir ištrynimą sekos viduryje, tuomet reikia naudoti sąrašą arba „forward_list“. Jei užduotis apima dažną įterpimą ir ištrynimą sekos pradžioje arba pabaigoje, tuomet reikia naudoti deką. Taigi vektoriai turėtų būti naudojami tik tada, kai tokios operacijos nėra svarbios.