C ++

Kaip naudoti C ++ vektorių

Kaip naudoti C ++ vektorių

Įvadas

Masyvas yra tų pačių objektų tipų eilė iš eilės esančiose atminties vietose. Masyvas negali padidinti rūdos ilgio. Vektorius yra kaip 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 „C ++“ standartinę biblioteką. Viena iš šių bibliotekų yra konteinerių biblioteka. Konteineris yra objektų rinkinys, su kuriuo galima atlikti tam tikras operacijas. C ++ konteinerius galima sugrupuoti į du rinkinius: sekos konteinerius ir asociatyviuosius konteinerius. Sekos talpyklos yra vektorius, masyvas (ne tas pats masyvas, apie kurį 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ą, deque, „forward_list“ ar sąrašą. Kai programuotojui reikia struktūros, reikalaujančios daugiau operacijų nei susijusios su įprastu masyvu, įprasto masyvo nereikėtų naudoti.

Jei užduotis yra dažnai įterpiama ir ištrinama sekos viduryje, turėtų būti naudojamas sąrašas arba „forward_list“. Jei užduotis apima dažnai įterpimus ir ištrynimus sekos pradžioje ar pabaigoje, reikia naudoti deque. Vektorius turėtų būti naudojamas, kai tokio pobūdžio operacijos nėra būtinos.

Šiame straipsnyje parodyta, kaip naudoti C ++ vektorių. Norėdami suprasti šį straipsnį, jums reikės šiek tiek žinių apie C ++ žymiklius, nuorodas ir masyvus.

Klasė ir objektai

Klasė yra kintamųjų ir funkcijų rinkinys, veikiantis kartu, kai kintamiesiems nėra priskirtų reikšmių. Kai kintamiesiems priskiriamos reikšmė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, bet turi skirtingas vertes. Objekto sukūrimas iš klasės taip pat žinomas kaip objekto momentizavimas.

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

Klasei priklausanti funkcija reikalinga objektui iš klasės sukurti. Programoje C ++ ši funkcija turi tą patį pavadinimą kaip ir klasės pavadinimas. Skirtingi objektai, sukurti (instancuoti) iš klasės, turi skirtingus pavadinimus, kuriuos kiekvienam iš jų suteikia programuotojas.

Objekto sukūrimas iš klasės reiškia objekto sukūrimą; tai taip pat reiškia objekto greitinimą.

Vektorių 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ę, visos vektorinės funkcijos (duomenų nariai ir narių funkcijos) tampa prieinamos. Norint naudoti objektą skaičiavimo duomenis išvesties į terminalą (konsolę), taip pat reikia įtraukti objekto antraštę. Norėdami parašyti programą bent jau su vektoriu, reikia įtraukti šias antraštes:

# įtraukti
# įtraukti

Vektoriaus inicijavimas

int foo [10];

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

Šioje programos vietoje vektorinė klasė jau buvo apibrėžta bibliotekoje ir įtraukta antraštė. Vektorių galima išaiškinti taip:

std :: vektorius vtr (8);

Čia vektorius yra specialios konstruktoriaus funkcijos. Duomenų, kuriuos laikys vektorius, tipas yra „int“ kampiniuose skliaustuose. Terminas „vtr“ yra programuotojo pasirinktas vektoriaus pavadinimas. Galiausiai „8“ skliaustuose yra preliminarus sveikųjų skaičių, kurį turės vektorius, skaičius.

Terminas „std“ reiškia standartinę vardų sritį. Šiame kontekste po šio termino turi būti dviguba dvitaškis. Kiekvienas gali parašyti savo vektorinės klasės 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 įrašyta std: . Kad išvengtumėte standartinio pavadinimo programoje „std ::“ kiekvieną kartą, programos failas gali prasidėti taip:

# įtraukti
# įtraukti
naudojant vardų sritį std;

Funkcijos perkrova

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

Vektoriaus konstravimas

Vektoriaus sukonstravimas reiškia vektorinio objekto greitinimą (sukūrimą). Konstruktoriaus funkcija yra perkrauta taip:

vektorius vardas

Tai sukuria nulio ilgio vektorių, kurio tipas yra „T.Šis sakinys sukuria nulio ilgio vektorių, kurio tipas yra „plūdė“, pavadinimu „vtr:“

vektorius vtr;

vektorius vardas (n)

Tai sukuria vektorių su n tipo „T“ elementais."Šio vektoriaus su keturiais plūduriuojančiais elementais teiginys yra toks:

vektorius vtr (4);

vektorius vardas (n, t)

Tai sukuria n elementų vektorių, inicijuojamą pagal reikšmę t. Šis sakinys sukuria 5 elementų vektorių, kur kiekvieno elemento vertė yra 3.4:

vektorius vtr (5, 3.4);

Konstrukcijos su inicializavimu

Vektorių galima sukonstruoti (sukurti) ir inicializuoti tuo pačiu metu vienu iš šių dviejų būdų:

vektorius vtr = 1.1, 2.2, 3.3, 4.4;

Arba

vektorius vtr 1.1, 2.2, 3.3, 4.4;

Atkreipkite dėmesį, kad tik po objekto pavadinimo nėra skliaustų. Skliausteliuose, naudojamuose iškart po objekto pavadinimo, turėtų būti inicialų sąrašas taip:

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

Vektorių galima sukonstruoti ir inicializuoti vėliau, naudojant inicializatorių sąrašą. Tokiu atveju skliaustai nebus naudojami:

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

vektorius V2 (V1)

Tai yra kopijų konstruktorius. Tai sukuria vektorių V2 kaip vektoriaus V1 kopiją. Tai iliustruoja šis kodas:

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

Vektoriaus priskyrimas statybų metu

Statybos metu galima sukurti tuščią vektorių, o jam priskirtas kitas:

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

Antrasis teiginys yra lygiavertis:

vektorius vtr2 = 1.1, 2.2, 3.3, 4.4;

const Vektorius

Konst vektorius yra vektorius, kurio elementų pakeisti negalima. Šio vektoriaus reikšmės yra tik skaitomos. Sukūrus vektorius pasirodo taip:

const vektorius vtr 1.1, 2.2, 3.3, 4.4;

Šio tipo vektoriuje elemento negalima pridėti ar pašalinti. Be to, jokios vertės negalima pakeisti.

Konstravimas su „Iterator“

Šablonas pateikia bendrą duomenų tipo vaizdą. Kartotuvas pateikia bendrą nuskaitymo per konteinerio reikšmes vaizdą. Sintaksė, sukurianti vektorių su iteratoriumi, yra tokia:

šabloną
vektorius (pirma InputIterator, paskutinė InputIterator, const Allocator & = Allocator ());

Tai sukonstruoja diapazono [pirmasis, paskutinis] vektorių naudodamas nurodytą paskirstytoją, kuris bus aptariamas vėliau šiame straipsnyje.

Sunaikinti vektorių

Norėdami sunaikinti vektorių, paprasčiausiai leiskite jam išeiti iš srities ir sunaikinimas atliekamas automatiškai.

Vektoriaus talpa

size_type talpa () const noexcept

Visą elementų, kuriuos vektorius gali turėti nereikalaudamas perskirstymo, skaičių grąžina talpos nario funkcija. Tai kodo segmentas yra toks:

vektorius vtr (4);
int num = vtr.talpa ();
cout << num << '\n';

Išvestis yra 4.

rezervas (n)

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

vektorius vtr (4);
vtr.rezervas (6);
cout << vtr.capacity() << '\n';

Išėjimas yra 6. Taigi, papildoma rezervuota vieta yra 6 - 4 = 2 elementai. Funkcija grąžinama negaliojančia.

dydis () const noexcept

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

vektorius vtr (4);
plūdė sz = vtr.dydis ();
cout << sz << '\n';

Išvestis yra 4.

Sumažinti, kad tilptų()

Suteikus papildomą pajėgumą vektoriui, turinčiam rezervo () funkciją, vektorių galima sumažinti iki jo pradinio dydžio. Tai iliustruoja šis kodas:

vektorius vtr (4);
vtr.rezervas (6);
vtr.Sumažinti, kad tilptų();
int sz = vtr.dydis ();
cout << sz << '\n';

Išvestis yra 4, o ne 6. Funkcija grąžinama negaliojančia.

pakeisti dydį (sz), pakeisti dydį (sz, c)

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

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

Rezultatas yra toks:

Naujas vtr1: 2 dydis
vtr2: 1.1 2.2 8.8 8.8

Funkcijos tampa negaliojančiomis.

tuščias () const noexcept

Ši funkcija grąžina 1 reikšmę „true“, jei vektoriuje nėra elementų, ir 0 reikšmę „false“, jei vektorius yra tuščias. Jei vektoriuje yra 4 vietos tam tikro tipo duomenims, pvz., Plūduriuojantiems, be jokios plūduriuojančios vertės, tada tas vektorius nėra tuščias. Tai iliustruoja šis kodas:

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

Rezultatas yra toks:

1
0
0

„Vektorinio elemento prieiga“

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

vektoriaus vardas [i]

Operacija „vectorName [i]“ grąžina nuorodą į elementą, esantį itūkst vektoriaus indeksas. Šie kodo išėjimai 3.3 aukščiau nurodytam vektoriui:

vektorius vtr 1.1, 2.2, 3.3, 4.4;
plūdė fl = vtr [2];
cout << fl << '\n';

vektoriausPavadinimas [i] konst

Kai vektorius yra pastovus, vietoj „vectorName [i]“ vykdoma operacija „vectorName [i] const“. Ši operacija naudojama tokiu kodu:

const vektorius vtr 1.1, 2.2, 3.3, 4.4;
plūdė fl = vtr [2];
cout << fl << '\n';

Išraiška grąžina pastovią nuorodą į itūkst vektoriaus elementas.

Reikšmės priskyrimas su „Subscript“

Vertę galima priskirti nestabiliam vektoriui taip:

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

Išvestis yra 8.8.

vectorName.i punkte

„VectorName.at (i) “yra panašus į„ vectorName [i] “, bet„ vectorName “.ties (i) “yra patikimesnė. Šis kodas rodo, kaip šis vektorius turėtų būti naudojamas:

vektorius vtr 1.1, 2.2, 3.3, 4.4;
plūdė fl = vtr.ties (2);
cout << fl << '\n';
at () yra vektoriaus nario funkcija.

vectorName.ties (i) konst

„VectorName.at (i) const “yra panašus į„ vectorName [i] const “, bet„ vectorName “.ties (i) const “yra patikimesnis. „VectorName.at (i) const “vykdoma vietoj„ vectorName “.ties (i) “, kai vektorius yra pastovus vektorius. Šis vektorius naudojamas tokiu kodu:

const vektorius vtr 1.1, 2.2, 3.3, 4.4;
plūdė fl = vtr.ties (2);
cout << fl << '\n';
at () const yra vektoriaus nario funkcija.

Reikšmės priskyrimas funkcijai at ()

Vertę galima priskirti nestabiliam vektoriui su funkcija at () taip:

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

Išvestis yra 8.8.

Problema su subkriptais

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

priekis ()

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

vektorius vtr 1.1, 2.2, 3.3, 4.4;
plūdė fl = vtr.priekis ();
cout << fl << '\n';

Elementas nėra pašalinamas iš vektoriaus.

priekis () konst

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

const vektorius vtr 1.1, 2.2, 3.3, 4.4;
plūdė fl = vtr.priekis ();
cout << fl << '\n';

Grąžinama pastovi nuoroda. Elementas nėra pašalinamas iš vektoriaus.

atgal ()

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

vektorius vtr 1.1, 2.2, 3.3, 4.4;
plūdė fl = vtr.atgal ();
cout << fl << '\n';

atgal () konst

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

const vektorius vtr 1.1, 2.2, 3.3, 4.4;
plūdė fl = vtr.atgal ();
cout << fl << '\n';

Grąžinama pastovi nuoroda. Elementas nėra pašalinamas iš vektoriaus.

Vektorinė duomenų prieiga

duomenys () noexcept; duomenys () const noexcept;

Bet kuris iš jų pateikia rodyklę, kurioje [duomenys (), duomenys () + dydis ()] yra galiojantis diapazonas.

Tai bus išsamiau aptarta vėliau straipsnyje.

Grįžtantys iteratoriai ir vektorius

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

pradėti () noexcept

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

vektorius vtr 1.1, 2.2, 3.3, 4.4;
vektorius:: iteratorius iter = vtr.pradėti ();
cout << *iter << '\n';

Išvestis yra 1.1. Atkreipkite dėmesį, kad deklaracija, gaunanti iteratorių, buvo deklaruota. Iteratoriui nurodoma grįžtamoji išraiška, kad gautų reikšmę taip pat, kaip rodikliui.

pradėti () const noexcept;

Grąžina iteratorių, kuris nurodo pirmąjį vektoriaus elementą. Kai prieš vektoriaus konstrukciją yra „const“, vietoj „begin ()“ vykdoma išraiška „pradėti () const“.Esant šiai sąlygai, atitinkamo vektoriaus elemento modifikuoti negalima. Tai naudojama šiame kode:

const vektorius vtr 1.1, 2.2, 3.3, 4.4;
vektorius:: const_iterator iter = vtr.pradėti ();
cout << *iter << '\n';

Išvestis yra 1.1. Atkreipkite dėmesį, kad grąžinamam iteratoriui priimti šį kartą vietoj „iterator“ buvo naudojamas „const_iterator“.

pabaiga () noexcept

Pateikia iteratorių, nukreiptą iškart už paskutinio vektoriaus elemento. Apsvarstykite šį kodo segmentą:

vektorius vtr 1.1, 2.2, 3.3, 4.4;
vektorius:: iteratorius iter = vtr.galas();
cout << *iter << '\n';

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

end () const noexcept

Pateikia iteratorių, nukreiptą iškart už paskutinio vektoriaus elemento. Kai prieš vektoriaus konstrukciją rašoma „const“, vietoj „end ()“ vykdoma frazė „end () const“.Apsvarstykite šį kodo segmentą:

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

Išėjimas yra 0. Atkreipkite dėmesį, kad grąžinamam iteratoriui priimti šį kartą vietoj „iterator“ buvo naudojamas „const_iterator“.

Atvirkštinė iteracija

Galima turėti iteratorių, kuris kartojasi nuo pabaigos iki prieš pat pirmąjį elementą.

rbegin () noexcept

Pateikia iteratorių, kuris nurodo paskutinį vektoriaus elementą, kaip šiame kodo segmente:

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

Išvestis yra 4.4.

Atkreipkite dėmesį, kad deklaracija, kuriai taikomas atvirkštinis iteratorius, buvo deklaruota. Iteratoriui nurodoma grįžtamoji išraiška, kad gautų reikšmę taip pat, kaip rodikliui.

rbegin () const noexcept;

Grąžina iteratorių, kuris nurodo paskutinį vektoriaus elementą. Kai prieš vektoriaus konstrukciją yra „const“, vietoj „rbegin ()“ vykdoma frazė „rbegin () const“.Esant šiai sąlygai, atitinkamo vektoriaus elemento modifikuoti negalima. Ši funkcija naudojama šiame kode:

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

Išvestis yra 4.4.

Atkreipkite dėmesį, kad grąžinamam iteratoriui priimti šį kartą buvo naudojamas „const_reverse_iterator“, o ne tik „reverse_iterator“.

rend () noexcept

Pateikia iteratorių, kuris rodo prieš pat pirmąjį vektoriaus elementą. Apsvarstykite šį kodo segmentą:

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

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

rend () const noexcept

Pateikia iteratorių, kuris rodo prieš pat pirmąjį vektoriaus elementą. Kai prieš vektoriaus konstrukciją yra „const“, vietoje „rend ()“ vykdoma išraiška „rend () const“.Apsvarstykite šį kodo segmentą:

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

Išėjimas yra 0.

Atkreipkite dėmesį, kad grąžinamam iteratoriui priimti šį kartą buvo naudojamas „const_reverse_iterator“, o ne tik „reverse_iterator“.

Vektorių modifikatoriai

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

a.vieta (p, args)

Įterpia T tipo objektą, sukonstruotą naudojant „std :: forward“(argumentai) ... prieš p.

Išsamesnės informacijos rasite vėliau

įterpti (iteratorPosition, vertė)

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

vektorius vtr 10, 20, 30, 40;
vektorius:: iteratorius iter = vtr.pradėti ();
++kartoti;
++kartoti;
vtr.įterpti (iter, 25);
cout << vtr[1] << " << vtr[2]<< '
" << vtr[3] << '\n';

Išvestis yra: 20 25 30.

Atkreipkite dėmesį, kad iteratorius buvo išplėstas (padidintas) kaip rodyklė.

Taip pat galima įterpti inicialų sąrašą, kaip parodo šis kodas:

vektorius vtr 10, 20, 30, 40;
vektorius:: iteratorius iter = vtr.pradėti ();
++kartoti;
++kartoti;
vtr.įterpti (iter, 25, 28);
cout << vtr[1] << " << vtr[2]<< '
" << vtr[3]<< " << vtr[4] << '\n';

Išvestis yra: 20 25 28 30.

ištrinti (pozicija)

Pašalina elementą iteratoriaus nurodytoje vietoje, tada grąžina iteratoriaus padėtį. Tai iliustruoja šis kodas:

vektorius vtr 10, 20, 30, 40;
vektorius:: iteratorius iter = vtr.pradėti ();
++kartoti;
++kartoti;
vtr.ištrinti (iter);
cout << vtr[0] << " << vtr[1] << '
" << vtr[2]<< '\n';

Rezultatas yra: 10 20 40

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

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

vektorius vtr 1.1, 2.2, 3.3, 4.4;
vtr.grįžti atgal (5.5);
plūdė fl = vtr [4];
cout << fl << '\n';

Išvestis yra 5.5.

„push_back“ (rv): - žr. vėliau.

pop_back ()

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

vektorius vtr 1.1, 2.2, 3.3, 4.4;
vtr.pop_back ();
plūdė sz = vtr.dydis ();
cout << sz << '\n';

Išvestis yra 3.

a.apsikeisti (b)

Du vektoriai gali būti sukeisti, kaip parodyta šiame kodo segmente:

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

Rezultatas yra:

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

Atkreipkite dėmesį, kad, jei reikia, vektoriaus ilgis padidinamas. Be to, reikšmės, neturinčios pakeitimų, pakeičiamos tam tikra numatytąja verte.

aišku ()

Pašalina visus elementus iš vektoriaus, kaip parodo šis kodo segmentas:

vektorius vtr 1.1, 2.2, 3.3, 4.4;
vtr.aišku ();
cout << vtr.size() << '\n';

Išėjimas yra 0.

Vektorių lygybė ir santykių operatoriai

== Operatorius

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

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

Išėjimas yra 0.

The != Operatorius

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

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

Išvestis yra 1.

The < Operator

Pateikia 1 reikšmę „true“, jei pirmasis vektorius yra pradinis antrojo vektoriaus pogrupis, kai 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 sutinkamas elementas, kuris yra mažesnis už atitinkamą antrojo vektoriaus elementą, 1 vis tiek bus grąžintas. Kitu atveju grąžinama 0 už klaidingą. Pavyzdžiui:

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

Išvestis yra 1. < does not include the case when the size and order are the same.

Operatorius

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

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 konteinerio pavyzdys. Vektorius yra „geresnė“ įprasto masyvo forma ir yra iš karto gaunama iš klasės. Vektoriai turi metodus, kurie klasifikuojami pagal: konstravimas ir priskyrimas, talpa, prieiga prie elementų, prieiga prie duomenų, iteratoriai, modifikatoriai ir skaitmeniniai perkrauti operatoriai.

Yra ir kitų sekų sudėtinių rodinių, vadinamų „list“, „forward_list“ ir „masyvas“. Jei užduotis apima dažnai įterpimus ir ištrynimus sekos viduryje, reikia naudoti sąrašą arba į priekį_ sąrašas. Jei užduotį reikia dažnai įterpti ir ištrinti sekos pradžioje ar pabaigoje, reikia naudoti deque. Taigi vektoriai turėtų būti naudojami tik tada, kai tokio pobūdžio operacijos nėra svarbios.

Valdykite ir valdykite pelės judėjimą tarp kelių „Windows 10“ monitorių
„Dual Display Mouse Manager“ leidžia jums valdyti ir konfigūruoti pelės judėjimą tarp kelių monitorių, sulėtinant jo judėjimą šalia sienos. „Windows 1...
„WinMouse“ leidžia tinkinti ir pagerinti pelės žymeklio judėjimą „Windows“ kompiuteryje
Jei norite pagerinti numatytąsias pelės žymiklio funkcijas, naudokite nemokamą programinę įrangą „WinMouse“. Tai prideda daugiau funkcijų, kurios padė...
Pelės kairiuoju pelės mygtuku mygtukas neveikia „Windows 10“
Jei naudojate specialią pelę su savo nešiojamuoju kompiuteriu arba staliniu kompiuteriu, tačiau neveikia pelės kairysis mygtukas dėl tam tikrų priežas...