Vektor vs nimekiri
Sageli segamini programmeerijatega on vektorid ja loendid järjestused, mida kasutatakse massiivihoidlates C ++ ja Java. Kaks terminit hoiavad massiivi aadresse, kuid massiivide hoidmiseks on erinevad meetodid.
Põhiline asi, mida peame teadma, on see, et massiiv on „nimekiri”, mis sisaldab osa või kõiki andmeid, s.o täisarvu, ujukoma või tähemärki ja on määratletud sulgudes „[]”.
Tegelikult käituvad vektorid ja loendid vastavalt juhtumitele. Vaatame siis neid kahte terminit ükshaaval.
Vektorid
Vektoreid kasutatakse massiivide hoidmiseks ja elementide juurde pääsemiseks. Siin pääsete juhuslikult juurde mis tahes elemendile, kasutades operaatorit []. Nii on vektortoiminguga hõlbus vaadata läbi kõik elemendid või üks konkreetne element. Nii et kui lisate ükskõik millise objekti lõpuks, algusesse või keskele, on vektoritel plusspunkt, kuna pääsete juurde juhuslikule aadressile ja saate seal muudatusi teha. Kuid vektorid on loendiobjektidega võrreldes pisut aeglased. Vektorid on sünkroniseeritud objektid, tõhusad juhusliku juurdepääsu korral ja nad hoiavad andmeid sünkroonitud loendis õigesti. Vektor valitakse alati, kui seda pole vaja sisestada ega kustutada
keskel (nimekiri) või eestpoolt.
Massiivi elementide arv võib dramaatiliselt erineda.
Näide:
vektor V;
V. sisestus (V. begin (), 3);
väita (V. suurus () == 1 && V. maht ()> = 1 && V [0] == 3);
Nimekirjad
Loendid on „topelt lingitud järjestused”, mis toetavad nii edasi kui ka tagasi liikumist. Alguses, lõpus ja keskel sisestamisel ja kustutamisel kuluv aeg on konstantne. Lingitud loendite vahele lisamine ja splaissimine ei muuda kehtetuks elementide iteratsiooni. Ainult eemaldamine muudab iteratsiooni kehtetuks. Neid ei sünkroonita, nii et neile pole juhuslikult juurde pääseda. Iteratsioonide järjestamine võib vastavalt kasutajale muutuda, kuid see ei mõjuta elementide muudatusi. Need on vektoritest kiiremad ja sobivad ideaalselt elementide loendite algusesse, keskele ja lõppu sisestamiseks ja kustutamiseks.
Näide:
# kaasata
// loetle klassimallide määratlus
… .
int main ()
int array [4] = 2, 6, 4, 8;
std :: loendi väärtused;
std :: loetlege muud väärtused;
Kokkuvõte:
1. Kui vektor on, siis nimekirja ei sünkroonita.
2. Loenditel pole vaikesuurust, samas kui vektori vaikesuurus on 10.
3. Loendid ja vektorid on mõlemad dünaamiliselt kasvavad massiivid.
4. Loend ei ole niidikindel, samas kui vektor on niidivaba.
5. Kuna nimekirjad kehtivad ainult esi- ja tagaosa lisamise ja kustutamise kohta, on need kiiremad
vektorid võtavad rohkem protsessorit.
6. Vektor kasvab oma suuruse järgi kaks korda, samal ajal kui nimekiri väheneb pooleks, st 50 protsendini.