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ļautKad 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ērsvtr2: 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:
10
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ākievietot (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 0vtr2: 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. 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.Secinājums