Erinevus C ++ vektori ja massiivi vahel

Vektorid on jadakonteinerid, mis kasutavad elementide hoidmiseks pidevat ladustamise asukohta. Nad saavad ladustamist hallata ja dünaamiliselt tõhusalt kasvatada. Need võimed on hinnaga: vektorid tarbivad rohkem mälu vastutasuks võime eest käidelda salvestust ja kasvavad dünaamiliselt.

vektor v; kus v on tüüpi vektorpoe täisarvu elementide muutuja. Seda nimetatakse vektori lähtestamiseks:

Salvestage juhuslik täisarv funktsiooniga „push_back”:

v.push_back (11);

v.push_back (12);

v.push_back (13);

v.push_back (14);

Funktsiooni “pop_back ()” abil viimase elemendi eemaldamiseks:

v.pop_back ();

Esimese elemendi eemaldamiseks saame kasutada funktsiooni erase ():

v.erase (v.begin ());

Esimese elemendi juurdepääs funktsiooni ees ();

v.front ();

Viimane juurdepääs funktsioonile tagasi ();

v.tagasi ();

Massiiv salvestab sama tüüpi elementide kindla suurusega jadakollektsiooni. Seda kasutatakse andmekogu hoidmiseks, kuid massiivi võib pidada sama tüüpi muutujate kogumiks, mida hoitakse külgnevates mälukohtades. Kõik massiivid koosnevad külgnevatest mäluasukohtadest, madalaim aadress vastab esimesele elemendile ja kõrgeim aadress viimasele elemendile.

Kuulutage massiiv C ++:

tüüp massiivi_nimi (massiivi_suurus); // Tüüpi kasutatakse massiivi elementide tüübi määramiseks

Massiivi lähtestamine:

topeltväärtused (5) = (23, 7, 32, 1, 66, 7, 11, 1, 44, 6);

C ++ on mitmemõõtmeline massiiv:

Tüübi nimi (suurus1) (suurus2)… .. (suurusN);

Kahemõõtmelise massiivi lähtestamine:

int a (3) (4) = ((0, 1, 2), (4, 5, 6, 7), (8, 9, 10, 11));

Kursori edastamine massiivile, määrates massiivi nime indeksita:

void dummyFunction (int * param) (

)

Indeksiga:

tühine dummyFunction (int param ()) (

)

C ++ vektori ja massiivi võrdlus ühest otsast teise (infograafika)

Allpool on toodud 8 parima vektori ja massiivi erinevus c ++ -s

Põhiline erinevus C ++ vektori ja massiivi vahel

Mõlemad C ++ Vector vs Array on turul populaarsed valikud; arutagem mõnda peamist erinevust vektori ja massiivi vahel c ++:

  1. Vektorid on järjestikused mahutid, samas kui massiiv on madalama taseme andmestruktuur.
  2. Vektor tarnitakse malliklassi vormis C ++ koos vanemaga kui Klassi klass, samas kui Massiiv on madalama taseme andmestruktuur, millel on oma spetsiifilised omadused.
  3. Vektor ei ole indeksipõhine ning tal on funktsioonid ja konstruktorid, samas kui massiivid on indeksipõhised andmestruktuurid, mille esimesele elemendile antakse madalaim aadress ja kõrgeim aadress massiivi viimasele elemendile.
  4. Vektor on oma olemuselt dünaamiline, st nende suurus suureneb elemendi suurema sisestamise korral automaatselt, samas kui massiivid on fikseeritud suurusega struktuur, kui neid ei saa lähtestada.
  5. Vektor on parem sagedaseks sisestamiseks ja kustutamiseks, samas kui massiivid sobivad palju paremini elementide sagedaseks kasutamiseks.
  6. Vektor hõivab palju rohkem mälu vastutasuks salvestuse haldamise ja dünaamilise kasvu võime eest, samas kui massiivid on mälustõhusad andmestruktuurid.
  7. Vektor on tuletatud kogumist, mis sisaldab üldisemat andmetüüpi, samas kui massiiv on fikseeritud ja talletab tugevamat tüüpi andmeid.
  8. Vektor salvestab elemendid külgnevas mälukohas ja võimaldab otsest juurdepääsu elemendile alaindeksi operaatori abil, samas kui Array sisaldab elemente nende mäluasukohaga, mis on olemuselt külgnevad.
  9. Vektor võtab elementide juurde pääsemiseks rohkem aega, samas kui Array külgnev omadus muudab need elementidele juurdepääsu jaoks väga tõhusaks.
  10. Vektorvõimenduslikud geneerilised ravimid, see on põhimõtteliselt tüübikinnitusega versioon, samas kui massiivid, mille tüüp-ohutu, kiiruse ja jõudluse osas on väga tõhus, toetavad mitut mõõdet.

C ++ vektori ja massiivi võrdlustabel

Allpool on C ++ Vector vs Array ülim võrdlus

C ++ vektori ja array võrdluse alusVektorMassiiv
LoomineJärjestikune konteiner elementide hoidmiseksAlgne andmestruktuur, mis põhineb indeksi kontseptsioonil
MäluHõivata rohkem mälu kui massiivisMälu-tõhus
PikkusPikkus varieerubFikseeritud pikkusega
KasutamineSage sisestamine ja kustutamineElementide sagedane juurdepääs
Suuruse muutmineSuuruse muutmine on olemuselt dünaamilineMassiivide suuruse muutmine on kallis
StruktuurMalliklass, ainult C ++ konstruktsioonKülgnev mälu asukoht
IndekseerimineMitteindeksipõhine struktuurIndeks põhineb madalaimal aadressil esimesel ja kõrgeimal aadressil viimasel
JuurdepääsJuurdepääsuelement on aeganõudev, kuigi põhineb elemendi positsioonilJuurdepääsuelement on pidev tööaeg sõltumata elemendi asukohast

Järeldus - C ++ vektor vs massiiv

Mõlemad C ++ vektor vs massiiv on erinevad tüübid, neil on erinevad võimalused ja nad salvestavad oma andmeid erineval viisil. C ++ Vector vs Array andmestruktuuride selline salvestusvõimalus ja kujundus muudavad need ainulaadseks. Massiiv on kindla suurusega ja kui see on eraldatud, ei saa seda üksusi lisada ega sealt eemaldada, samuti peavad kõik elemendid olema sama tüüpi. Seega on see tüübi jaoks ohutu ja kiiruse ning jõudluse osas kõige tõhusam lineaarne andmestruktuur. Array toetab ka mitut mõõdet. Vektor on malliklass ja ainult C ++ konstruktsioon. Erinevalt massiivist on need oma olemuselt dünaamilised, nende suurust saab muuta, sageli elementide sagedase sisestamise ja kustutamisega. See on põhimõtteliselt malliklass, mis sisaldab vihjeid hunnikusse, nii et kui alati helistada std: vector, siis nimetatakse alati uut. Vektor-elemendid on garanteeritud külgnevad, kuid samas on need osuti-põhise lähenemise tõttu aeglasemalt juurdepääsetavad. Nende praktiliste andmete saamiseks peab kõigepealt olema juurdepääs osutile.

C ++ Vector vs Array on lineaarne andmestruktuur, mis sobib hästi erinevateks stsenaariumiteks. Kui sagedane sisestamine ja kustutamine toimub samal ajal ja mälu ei ole piirang, on vektor ideaalne valik, samas kui stsenaariumi korral, näiteks vajalike elementide sagedane juurdepääs mälupiiranguga, on massiiv parem valik. Kõik sõltub kasutusjuhtumist ja nõudest. Massiiv on olemuselt alati loend, kuid vektor on malliklass ja sama kui dünaamiline massiiv. Massiiv võimaldab mõlemat tüüpi juurdepääsu, otsest ja järjestikust juurdepääsu, samas kui Vector lubab ainult järjestikust juurdepääsu. Ja seda seetõttu, et neid andmestruktuure mällu salvestatakse. Kuna Vector elemendid on paigutatud külgnevasse mäluplokki, saab neid iteraatori abil hõlpsalt läbida.

C ++ versioonis on malliklassina saadaval mitu funktsiooni, kõik funktsioonid pakuvad vektori ümber mingisuguseid funktsioone, st. Algus (), lõpp (), rbegin (), rend (), cbegin (), cend (), crbegin (), crend ​​(), suurus (), max_size (), maht (), resize (), tühi (), reverse () and shrink_to_fit (). Massiiv on seotud pideva külgneva mälu riistvara mõistega, iga elemendi suurus on identne. Mõlemad C ++ Vector vs Array ideed sobivad stsenaariumide põhjal üsna hästi. Päeva lõpus keeb see kõik nõudeni. Arendaja peab kaaluma projekti nõuet ja tegema seega otsuse.

Soovitatav artikkel

See on juhend C ++ Vector vs Array peamiste erinevuste kohta. Siin käsitleme ka C ++ vektori ja massiivi peamisi erinevusi infograafikaga ja võrdlustabelit. Võimalik, et lisateabe saamiseks võite vaadata järgmisi C ++ Vector vs Array artikleid -

  1. C ++ viide vs osuti
  2. C # massiiv vs nimekiri
  3. C vs C ++ jõudlus
  4. Java loend vs massiivide loend
  5. Nõuda vs importida: mis on selle eelised
  6. C vs C #: mis on omadused

Kategooria: