Kā lietot C ++ Vector

How Use C Vector



Ievads

Masīvs ir vienādu objektu tipu virkne secīgās atmiņas vietās. Masīvs nevar palielināt rūdas samazinājumu. Vektors ir kā masīvs, bet tā garumu var palielināt vai samazināt. Tāpēc vektoram ir daudz vairāk operāciju nekā masīvam.

C ++ ir daudz bibliotēku, no kurām visas veido C ++ standarta bibliotēku. Viena no šīm bibliotēkām ir konteineru bibliotēka. Konteiners ir objektu kolekcija, un kolekcijai var veikt noteiktas darbības. C ++ konteinerus var sagrupēt divās grupās: secības konteineri un asociētie konteineri. Secības konteineri ir vektors, masīvs (nav tas pats masīvs, kas tika apspriests iepriekš), deque, forward_list un list. Tās ir dažādas kolekcijas (masīvam līdzīgas datu struktūras), un katra no tām piedāvā atšķirīgus kompromisus.







Jebkuram programmētājam vajadzētu zināt, kā izlemt, vai izmantot vektoru, masīvu, deku, forward_list vai sarakstu. Ja programmētājam nepieciešama struktūra, kas prasa vairāk operāciju nekā tās, kas saistītas ar parasto masīvu, parasto masīvu nevajadzētu izmantot.



Ja uzdevums ietver biežu ievietošanu un dzēšanu secības vidū, tad jāizmanto saraksts vai forward_list. Ja uzdevums ietver biežu ievietošanu un dzēšanu secības sākumā vai beigās, tad jāizmanto dekode. Ja šāda veida darbības nav nepieciešamas, jāizmanto vektors.



Šis raksts parāda, kā izmantot C ++ vektoru. Lai saprastu šo rakstu, jums būs nepieciešamas dažas zināšanas par C ++ rādītājiem, atsaucēm un masīviem.





Klase un objekti

Klase ir mainīgo un funkciju kopums, kas darbojas kopā, ja mainīgajiem nav piešķirtas vērtības. Kad mainīgajiem tiek piešķirtas vērtības, klase kļūst par objektu. Dažādas vērtības, kas piešķirtas vienai klasei, rada dažādus objektus; tas ir, dažādi objekti var būt vienā klasē, bet tiem ir dažādas vērtības. Objekta izveidošana no klases ir pazīstama arī kā objekta eksponēšana.

Termins vektors apraksta klasi. Objektam, kas izveidots no vektora, ir nosaukums, kuru izvēlas programmētājs.



Funkcija, kas pieder klasei, ir nepieciešama, lai parādītu objektu no klases. C ++ šai funkcijai ir tāds pats nosaukums kā klases nosaukumam. Dažādiem objektiem, kas izveidoti (eksponēti) no klases, ir atšķirīgi nosaukumi, kurus katram no tiem piešķīris programmētājs.

Izveidot objektu no klases nozīmē konstruēt objektu; tas nozīmē arī objekta momentānošanu.

Vektoru klase

Vektoru klase jau ir definēta un atrodas bibliotēkā. Lai izmantotu vektoru klasi, programmētājam failā jāiekļauj vektora galvene ar šādu priekšapstrādes direktīvu:

#iekļaut

Kad galvene ir iekļauta, visas vektora funkcijas (datu dalībnieki un dalībnieku funkcijas) kļūst pieejamas. Lai izmantotu skaitīšanas objektu, lai izvadītu datus uz termināli (konsoli), jāiekļauj arī objekta galvene. Lai rakstītu programmu ar vektoru, ir jāiekļauj vismaz šādas galvenes:

#iekļaut
#iekļaut

Vektora izveidošana

intfoo[10];

Iepriekš ir masīva deklarācija ar nosaukumu foo un elementu skaitu 10. Šis ir veselu skaitļu masīvs. Vektora deklarācija ir līdzīga. Vektoram elementu skaits nav obligāts, jo vektora garums var palielināties vai samazināties.

Šajā programmas brīdī vektoru klase jau ir definēta bibliotēkā, un galvene ir iekļauta. Vektoru var attēlot šādi:

stundas::vektors <int>vtr(8);

Šeit vektoram ir īpaša konstruktoru funkcija. Datu veids, ko vektors glabās, ir int, leņķa iekavās. Termins vtr ir nosaukums, ko programmētājs izvēlējies vektoram. Visbeidzot, 8 iekavās ir provizoriskais veselu skaitļu skaits, kas būs vektoram.

Termins std apzīmē standarta vārda telpu. Šajā kontekstā šim terminam jāseko dubultā kols. Ikviens var uzrakstīt savu vektoru klases bibliotēku un to izmantot. Tomēr C ++ jau ir standarta bibliotēka ar standarta nosaukumiem, ieskaitot vektoru. Lai izmantotu standarta nosaukumu, pirms standarta nosaukuma jābūt std ::. Lai izvairītos no standarta nosaukuma ierakstīšanas programmā std ::, programmas failu var sākt šādi:

#iekļaut
#iekļaut
izmantojot nosaukumvietas std;

Funkcijas pārslodze

Ja diviem vai vairākiem dažādu funkciju parakstiem ir vienāds nosaukums, tiek uzskatīts, ka šis nosaukums ir pārslogots. Izsaucot vienu funkciju, argumentu skaits un veids nosaka izpildāmo funkciju.

Vektora konstruēšana

Vektora konstruēšana nozīmē vektora objekta eksponēšanu (izveidošanu). Konstruktora funkcija ir pārslogota šādi:

vektora nosaukums

Tādējādi tiek izveidots vektors, kura garums ir nulle un tips T. Šāds paziņojums izveido tipa pludiņa nulles garuma vektoru ar nosaukumu vtr:

vektors<peldēt>vtr;

vektora nosaukums (n)

Tādējādi tiek izveidots vektors ar T tipa T elementiem. Paziņojums šim vektoram ar četriem pludiņa elementiem ir šāds:

vektors<peldēt>vtr(4);

vektora nosaukums (n, t)

Tādējādi tiek izveidots vektors no n elementiem, kas inicializēti vērtībā t. Šis paziņojums izveido 5 elementu vektoru, kur katra elementa vērtība ir 3,4:

vektors<peldēt>vtr(5, 3.4);

Konstruēšana ar inicializāciju

Vektoru var izveidot (izveidot) un inicializēt vienlaikus vienā no šiem diviem veidiem:

vektors<peldēt>vtr= {1.1, 2.2, 3.3, 4.4};

Vai

vektors<peldēt>vtr{1.1, 2.2, 3.3, 4.4};

Ņemiet vērā, ka aiz objekta nosaukuma nav iekavu. Iekavām, kas tiek izmantotas tūlīt pēc objekta nosaukuma, jābūt inicializētāju sarakstam:

vektors<peldēt>vtr({1.1, 2.2, 3.3, 4.4});

Vektoru var izveidot un inicializēt vēlāk, izmantojot inicializētāju sarakstu. Šajā gadījumā iekavas netiks izmantotas:

vektors<peldēt>vtr;
vtr= {1.1, 2.2, 3.3, 4.4};

vektors V2 (V1)

Šis ir kopiju veidotājs. Tas izveido vektoru V2 kā vektora V1 kopiju. To ilustrē šāds kods:

vektors<peldēt>vtr1(5, 3.4);
vektors<peldēt>vtr2(vtr1);

Vektora piešķiršana būvniecības laikā

Būvniecības laikā var izveidot tukšu vektoru, kamēr tam tiek piešķirts cits:

vektors<peldēt>vtr1{1.1, 2.2, 3.3, 4.4};
vektors<peldēt>vtr2=vtr1;

Otrais apgalvojums ir līdzvērtīgs:

vektors<peldēt>vtr2= {1.1, 2.2, 3.3, 4.4};

const Vektors

Const vektors ir vektors, kura elementus nevar mainīt. Šī vektora vērtības ir tikai lasāmas. Izveidojot, vektors parādās šādi:

konstvektors<peldēt>vtr{1.1, 2.2, 3.3, 4.4};

Šajā vektoru tipā nevienu elementu nevar pievienot vai noņemt. Turklāt vērtību nevar mainīt.

Konstruēšana ar Iterator

Veidne nodrošina vispārēju datu tipa attēlojumu. Iterators nodrošina vispārīgu skenēšanas attēlojumu, izmantojot konteinera vērtības. Vektora ar iteratoru izveides sintakse ir šāda:

veidne<klases InputIterator>
vektors(Ievades ievadītājs vispirms,InputIterator pēdējais,konstPiešķīrējs& =Piešķīrējs());

Tas izveido vektoru diapazonam [pirmais, pēdējais], izmantojot norādīto sadalītāju, kas tiks aplūkots vēlāk šajā rakstā.

Vektora iznīcināšana

Lai iznīcinātu vektoru, vienkārši ļaujiet tam iziet no darbības jomas un iznīcināšana tiek veikta automātiski.

Vektora ietilpība

size_type capacity () const noexcept

Jaudu elementa funkcija atgriež kopējo elementu skaitu, ko vektors var turēt, neprasot pārdalīšanu. Koda segments tam ir šāds:

vektors<peldēt>vtr(4);
intuz vienu=vtr.jaudu();
izmaksas<<uz vienu<< ' n';

Izeja ir 4.

rezerve (n)

Atmiņas vieta ne vienmēr ir brīvi pieejama. Papildu vietu var rezervēt iepriekš. Apsveriet šādu koda segmentu:

vektors<peldēt>vtr(4);
vtr.rezervē(6);
izmaksas<<vtr.jaudu() << ' n';

Rezultāts ir 6. Tātad rezervētā papildu vieta ir 6 - 4 = 2 elementi. Funkcija atgriežas spēkā neesoša.

size () const noexcept

Tas atgriež vektoru elementu skaitu. Šo kodu ilustrē šāds kods:

vektors<peldēt>vtr(4);
peldēts=vtr.Izmērs();
izmaksas<<s<< ' n';

Izeja ir 4.

shrink_to_fit ()

Pēc papildu jaudas piešķiršanas vektoram ar rezerves () funkciju vektoru var samazināt tā, lai tas atbilstu sākotnējam izmēram. To ilustrē šāds kods:

vektors<peldēt>vtr(4);
vtr.rezervē(6);
vtr.shrink_to_fit();
ints=vtr.Izmērs();
izmaksas<<s<< ' n';

Rezultāts ir 4, nevis 6. Funkcija atgriež tukšu.

mainīt izmērus (sz), mainīt izmērus (sz, c)

Tādējādi tiek mainīts vektora izmērs. Ja jaunais izmērs ir mazāks par veco, tad beigās esošie elementi tiek izdzēsti. Ja jaunais izmērs ir garāks, beigās tiek pievienota kāda noklusējuma vērtība. Lai iegūtu noteiktu pievienoto vērtību, izmantojiet resize () funkciju ar diviem argumentiem. Šāds koda segments ilustrē šo divu funkciju izmantošanu:

vektors<peldēt>vtr1{1.1, 2.2, 3.3, 4.4};
vtr1.mainīt izmērus(2);
izmaksas<< 'Jauns vtr1 izmērs:' <<vtr1.Izmērs() << ' n';
vektors<peldēt>vtr2{1.1, 2.2};
vtr2.mainīt izmērus(4, 8.8);
izmaksas<< 'vtr2:'<<vtr2[0] <<''<<vtr2[1] <<'
'
<<vtr2[2] <<''<<vtr2[3] << ' n';

Rezultāts ir šāds:

Jauns vtr1: 2 izmērs
vtr2: 1.1 2.2 8.8 8.8

Funkcijas atgriežas spēkā neesošas.

empty () const noexcept

Šī funkcija atgriež 1 par patiesu, ja vektorā nav elementu, un 0 par nepatiesu, ja vektors ir tukšs. Ja vektoram ir 4 atrašanās vietas konkrētam datu veidam, piemēram, pludiņam, bez pludiņa vērtības, tad šis vektors nav tukšs. To ilustrē šāds kods:

vektors<peldēt>vtr;
izmaksas<<vtr.tukšs() << ' n';
vektors<peldēt>vt(4);
izmaksas<<tā katukšs() << ' n';

vektors<peldēt>v(4,3.5);
izmaksas<<v.tukšs() << ' n';

Rezultāts ir šāds:

1
0
0

Piekļuve vektoru elementiem

Vektoru var pakārtoti (indeksēt) kā masīvu. Indeksa skaitīšana sākas no nulles.

vectorName [i]

Operācija vectorName [i] atgriež atsauci uz elementu itūkstvektora indekss. Šāds koda izejas 3.3 iepriekš minētajam vektoram:

vektors<peldēt>vtr{1.1, 2.2, 3.3, 4.4};
peldētfl=vtr[2];
izmaksas<<fl<< ' n';

vectorName [i] konst

Operācija vectorName [i] const tiek izpildīta, nevis vectorName [i], ja vektors ir nemainīgs vektors. Šī darbība tiek izmantota šādā kodā:

konstvektors<peldēt>vtr{1.1, 2.2, 3.3, 4.4};
peldētfl=vtr[2];
izmaksas<<fl<< ' n';

Izteiksme atgriež pastāvīgu atsauci uz itūkstvektora elements.

Vērtības piešķiršana ar apakšindeksu

Nemainīgam vektoram var piešķirt vērtību šādi:

vektors<peldēt>vtr{1.1, 2.2, 3.3, 4.4};
vtr[2] = 8.8;
izmaksas<<vtr[2] << ' n';

Rezultāts ir 8,8.

vectorName.at (i)

vectorName.at (i) ir kā vectorName [i], bet vectorName.at (i) ir ticamāks. Šis kods parāda, kā šis vektors jāizmanto:

vektors<peldēt>vtr{1.1, 2.2, 3.3, 4.4};
peldētfl=vtr.plkst(2);
izmaksas<<fl<< ' n';
plkst()ir vektora dalībnieksfunkciju.

vectorName.at (i) const

vectorName.at (i) const ir kā vectorName [i] const, bet vectorName.at (i) const ir ticamāks. vectorName.at (i) const tiek izpildīts, nevis vectorName.at (i), ja vektors ir nemainīgs vektors. Šo vektoru izmanto šādā kodā:

konstvektors<peldēt>vtr{1.1, 2.2, 3.3, 4.4};
peldētfl=vtr.plkst(2);
izmaksas<<fl<< ' n';
plkst() konstir vektora dalībnieksfunkciju.

Vērtības piešķiršana funkcijai at ()

Vērtību var piešķirt nepastāvīgam vektoram ar funkciju at () šādi:

vektors<peldēt>vtr{1.1, 2.2, 3.3, 4.4};
vtr.plkst(2) = 8.8;
izmaksas<<vtr[2] << ' n';

Rezultāts ir 8,8.

Problēma ar apakšskriptu

Apakšskriptēšanas (indeksēšanas) problēma ir tāda, ka, ja indekss ir ārpus diapazona, var tikt atgriezta nulle vai izpildes laikā var tikt parādīta kļūda.

priekšā ()

Tas atgriež atsauci uz vektora pirmo elementu, nenoņemot elementu. Šāda koda izvade ir 1.1.

vektors<peldēt>vtr{1.1, 2.2, 3.3, 4.4};
peldētfl=vtr.priekšā();
izmaksas<<fl<< ' n';

Elements netiek noņemts no vektora.

front () const

Ja pirms vektora konstrukcijas ir const, izteiksme front () const tiek izpildīta, nevis front (). Tas tiek izmantots šādā kodā:

konstvektors<peldēt>vtr{1.1, 2.2, 3.3, 4.4};
peldētfl=vtr.priekšā();
izmaksas<<fl<< ' n';

Tiek atgriezta pastāvīga atsauce. Elements netiek noņemts no vektora.

atpakaļ ()

Tas atgriež atsauci uz vektora pēdējo elementu, nenoņemot elementu. Šāda koda izvade ir 4.4.

vektors<peldēt>vtr{1.1, 2.2, 3.3, 4.4};
peldētfl=vtr.atpakaļ();
izmaksas<<fl<< ' n';

atpakaļ () konst

Ja pirms vektora konstrukcijas ir const, izteiksme back () const tiek izpildīta, nevis back (). Tas tiek izmantots šādā kodā:

konstvektors<peldēt>vtr{1.1, 2.2, 3.3, 4.4};
peldētfl=vtr.atpakaļ();
izmaksas<<fl<< ' n';

Tiek atgriezta pastāvīga atsauce. Elements netiek noņemts no vektora.

Piekļuve vektoru datiem

data () noexcept; data () const noexcept;

Jebkurš no tiem atgriež rādītāju, lai [data (), data () + size ()) būtu derīgs diapazons.

Tas tiks sīkāk aplūkots vēlāk rakstā.

Atkārtotie iratori un vektors

Iterators ir kā rādītājs, bet tam ir vairāk funkcionalitātes nekā rādītājam.

start () noexcept

Atgriež iteratoru, kas norāda uz vektora pirmo elementu, kā norādīts šādā koda segmentā:

vektors<peldēt>vtr{1.1, 2.2, 3.3, 4.4};
vektors<peldēt> ::iteratorsiter=vtr.sākt();
izmaksas<< *iter<< ' n';

Rezultāts ir 1.1. Ņemiet vērā, ka deklarācija, kas saņem atkārtotāju, ir deklarēta. Atkārtotajā izteiksmē iterators tiek atsaukts, lai iegūtu vērtību tādā pašā veidā, kā norādes atcelšana.

begin () const noexcept;

Atgriež iteratoru, kas norāda uz vektora pirmo elementu. Ja pirms vektora konstrukcijas ir konst, izteiksme begin () const tiek izpildīta, nevis begin (). Šādā gadījumā atbilstošo vektora elementu nevar mainīt. Tas tiek izmantots šādā kodā:

konstvektors<peldēt>vtr{1.1, 2.2, 3.3, 4.4};
vektors<peldēt> ::const_iteratoriter=vtr.sākt();
izmaksas<< *iter<< ' n';

Rezultāts ir 1.1. Ņemiet vērā, ka atgrieztā iteratora saņemšanai šoreiz tika izmantots const_iterator, nevis tikai iterators.

end () noexcept

Atgriež iteratoru, kas norāda tieši aiz vektora pēdējā elementa. Apsveriet šādu koda segmentu:

vektors<peldēt>vtr{1.1, 2.2, 3.3, 4.4};
vektors<peldēt> ::iteratorsiter=vtr.beigas();
izmaksas<< *iter<< ' n';

Rezultāts ir 0, kas ir bezjēdzīgi, jo ārpus pēdējā elementa nav neviena konkrēta elementa.

end () const noexcept

Atgriež iteratoru, kas norāda tieši aiz vektora pēdējā elementa. Ja pirms vektora konstrukcijas ir konst, izteiksme end () const tiek izpildīta, nevis end (). Apsveriet šādu koda segmentu:

konstvektors<peldēt>vtr{1.1, 2.2, 3.3, 4.4};
vektors<peldēt> ::const_iteratoriter=vtr.beigas();
izmaksas<< *iter<< ' n';

Izeja ir 0. Ņemiet vērā, ka atgrieztā iteratora saņemšanai šoreiz ir izmantots konstante_iterators, nevis tikai iterators.

Apgrieztā atkārtošana

Ir iespējams izveidot atkārtotāju, kas atkārtojas no beigām līdz tieši pirmajam elementam.

rbegin () noexcept

Atgriež iteratoru, kas norāda uz vektora pēdējo elementu, kā norādīts šādā koda segmentā:

vektors<peldēt>vtr{1.1, 2.2, 3.3, 4.4};
vektors<peldēt> ::reverse_iteratorvecāks=vtr.rbegin();
izmaksas<< *vecāks<< ' n';

Rezultāts ir 4,4.

Ņemiet vērā, ka deklarācija, kas saņem reverso atkārtotāju, ir deklarēta. Atkārtotajā izteiksmē iterators tiek atsaukts, lai iegūtu vērtību tādā pašā veidā, kā norādes atcelšana.

rbegin () const noexcept;

Atgriež iteratoru, kas norāda uz vektora pēdējo elementu. Ja pirms vektora konstrukcijas ir const, rbegin () vietā tiek izpildīta izteiksme rbegin () const. Šādā gadījumā atbilstošo vektora elementu nevar mainīt. Šī funkcija tiek izmantota šādā kodā:

konstvektors<peldēt>vtr{1.1, 2.2, 3.3, 4.4};
vektors<peldēt> ::const_reverse_iteratorvecāks=vtr.rbegin();
izmaksas<< *vecāks<< ' n';

Rezultāts ir 4,4.

Ņemiet vērā, ka atgrieztā iteratora saņemšanai šoreiz tika izmantots konstanta_reversais_iterators, nevis tikai reversais_iterators.

render () noexcept

Atgriež iteratoru, kas norāda tieši pirms vektora pirmā elementa. Apsveriet šādu koda segmentu:

vektors<peldēt>vtr{1.1, 2.2, 3.3, 4.4};
vektors<peldēt> ::reverse_iteratorvecāks=vtr.padara();
izmaksas<< *vecāks<< ' n';

Rezultāts ir 0, kas ir bezjēdzīgi, jo tieši pirms pirmā elementa nav konkrēta elementa.

render () const noexcept

Atgriež iteratoru, kas norāda tieši pirms vektora pirmā elementa. Ja pirms vektora konstrukcijas ir const, izteiksme rend () const tiek izpildīta, nevis rend (). Apsveriet šādu koda segmentu:

konstvektors<peldēt>vtr{1.1, 2.2, 3.3, 4.4};
vektors<peldēt> ::const_reverse_iteratorvecāks=vtr.padara();
izmaksas<< *vecāks<< ' n';

Izeja ir 0.

Ņemiet vērā, ka atgrieztā iteratora saņemšanai šoreiz tika izmantots konstanta_reversais_iterators, nevis tikai reversais_iterators.

Vektoru modifikatori

Modifikators, kas modificē vektoru, var ņemt vai atgriezt atkārtotāju.

a. paraugs (p, args)

Ievieto T tipa objektu, kas konstruēts ar std :: forward (args)… pirms p.

Sīkāku informāciju skatīt vēlāk

ievietot (iteratorPosition, value)

Ievieto vērtības kopiju vektora iteratora pozīcijā. Atgriež atkārtotāju (pozīciju) vektorā, kurā ir ievietota kopija. Šis kods parāda, kur vērtība ir ievietota:

vektors<int>vtr{10, divdesmit, 30, 40};
vektors<int> ::iteratorsiter=vtr.sākt();
++iter;
++iter;
vtr.ielikt(iter, 25);
izmaksas<<vtr[1] << '' <<vtr[2]<< '
'
<<vtr[3] << ' n';

Rezultāts ir: 20 25 30.

Ņemiet vērā, ka iterators tika uzlabots (palielināts) tāpat kā rādītājs.

Var arī ievietot inicializētāju sarakstu, kā parādīts šādā kodā:

vektors<int>vtr{10, divdesmit, 30, 40};
vektors<int> ::iteratorsiter=vtr.sākt();
++iter;
++iter;
vtr.ielikt(iter, {25, 28});

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

Rezultāts ir: 20 25 28 30.

dzēst (pozīcija)

Noņem elementu vietā, uz kuru norāda iterators, un pēc tam atgriež iteratora pozīciju. To ilustrē šāds kods:

vektors<int>vtr{10, divdesmit, 30, 40};
vektors<int> ::iteratorsiter=vtr.sākt();
++iter;
++iter;
vtr.dzēst(iter);
izmaksas<<vtr[0] << '' <<vtr[1] << '
'
<<vtr[2]<< ' n';

Rezultāts ir: 10 20 40

push_back (t), push_back (rv)

Izmanto, lai vektora beigās pievienotu vienu elementu. Izmantojiet push_back (t) šādi:

vektors<peldēt>vtr{1.1, 2.2, 3.3, 4.4};
vtr.atgrūst(5.5);
peldētfl=vtr[4];
izmaksas<<fl<< ' n';

Rezultāts ir 5,5.

atgrūst(rv): -Redzēsimies vēlāk.

pop_back ()

Noņem pēdējo elementu, neatgriežot to. Vektora izmērs tiek samazināts par 1. To ilustrē šāds kods:

vektors<peldēt>vtr{1.1, 2.2, 3.3, 4.4};
vtr.pop_back();
peldēts=vtr.Izmērs();
izmaksas<<s<< ' n';

Izeja ir 3.

a. maiņa (b)

Var nomainīt divus vektorus, kā parādīts šādā koda segmentā:

vektors<peldēt>vtr1{1.1, 2.2, 3.3, 4.4};
vektors<peldēt>vtr2{10, divdesmit};
vtr1.apmainīt(vtr2);
izmaksas<< 'vtr1:'<<vtr1[0] <<''<<vtr1[1] <<'
'
<<vtr1[2] <<''<<vtr1[3] << ' n';

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

Rezultāts ir šāds:

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

Ņemiet vērā, ka, ja nepieciešams, vektora garums tiek palielināts. Arī vērtības, kurām nebija aizstājēju, tiek aizstātas ar kādu noklusējuma vērtību.

skaidrs ()

Noņem visus elementus no vektora, kā parādīts šādā koda segmentā:

vektors<peldēt>vtr{1.1, 2.2, 3.3, 4.4};
vtr.skaidrs();
izmaksas<<vtr.Izmērs() << ' n';

Izeja ir 0.

Vektoru vienlīdzības un attiecību operatori

== Operators

Atgriež vērtību 1, ja abiem vektoriem ir vienāds izmērs un atbilstošie elementi ir vienādi; pretējā gadījumā tas atgriež 0 par nepatiesu. Piemēram:

vektors<int>U{1, 2, 3};
vektors<int>V{4, 5, 6};
bool bl=U==V;
izmaksas<<bl<< ' n';

Izeja ir 0.

The! = Operators

Atgriež vērtību 1, ja abiem vektoriem nav vienāda izmēra un/vai atbilstošie elementi nav vienādi; pretējā gadījumā tas atgriež 0 par nepatiesu. Piemēram:

vektors<int>U{1, 2, 3};
vektors<int>V{4, 5, 6};
bool bl=U! =V;
izmaksas<<bl<< ' n';

Izeja ir 1.

The

Atgriež vērtību 1, ja pirmais vektors ir otrā vektora sākotnējā apakškopa, un divu vienādu daļu elementi ir vienādi un tādā pašā secībā. Ja abi vektori ir vienāda izmēra un pārvietojas no kreisās uz labo pusi un pirmajā vektorā tiek konstatēts elements, kas ir mazāks par atbilstošo elementu otrajā vektorā, tad 1 joprojām tiks atgriezts. Pretējā gadījumā tiek atgriezts 0 par nepatiesu. Piemēram:

vektors<int>U{3, 1, 1};
vektors<int>V{3, 2, 1};
bool bl=U<V;
izmaksas<<bl<< ' n';

Izeja ir 1.

> Operators

Atgriežas! (U

The<= Operator

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

> = Operators

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

Secinājums

Vektors ir secības konteinera piemērs. Vektors ir labāks parastā masīva veids un tiek veidots no klases. Vektoriem ir metodes, kas tiek klasificētas: konstrukcija un piešķiršana, jauda, ​​elementu piekļuve, piekļuve datiem, iteratori, pārveidotāji un skaitliski pārslogoti operatori.

Ir arī citi secības konteineri, kurus sauc par sarakstu, uz priekšu_sarakstu un masīvu. Ja uzdevums ietver biežu ievietošanu un dzēšanu secības vidū, tad jāizmanto saraksts vai forward_list. Ja uzdevums ietver biežu ievietošanu un dzēšanu secības sākumā vai beigās, tad jāizmanto dekāža. Tātad vektori jāizmanto tikai tad, ja šāda veida darbības nav svarīgas.