Rozdiel medzi vektormi C ++ vs Array

Vektory sú sekvenčné kontajnery, ktoré na ukladanie prvkov využívajú miesta nepretržitého skladovania. Môžu spravovať úložisko a dynamicky rásť efektívnym spôsobom. Tieto schopnosti prichádzajú za cenu: vektory spotrebúvajú viac pamäte výmenou za schopnosť zvládnuť ukladanie a dynamicky narastať.

vektor v; kde v je premenná typu celočíselné prvky typu Vektorový obchod. Toto je známe ako inicializácia vektora:

Uložte náhodné celé číslo s funkciou „push_back“:

v.push_back (11);

v.push_back (12);

v.push_back (13);

v.push_back (14);

Pomocou funkcie „pop_back ()“ odstráňte posledný prvok:

v.pop_back ();

Na odstránenie prvého prvku môžeme použiť funkciu erase ():

v.erase (v.begin ());

Prístup k prvému prvku s funkčnou prednou časťou ();

v.front ();

Posledný prístup k prvku s funkciou späť ();

v.back ();

Pole ukladá sekvenčnú kolekciu prvkov rovnakého typu s pevnou veľkosťou. Používa sa na ukladanie kolekcie údajov, ale pole sa môže považovať za kolekciu premenných toho istého typu uložených na susedných pamäťových miestach. Všetky polia pozostávajú z priľahlých pamäťových miest, pričom najnižšia adresa zodpovedá prvému prvku a najvyššia adresa poslednému prvku.

Vyhlásiť pole v C ++:

type array_name (array_size); // Typ sa používa na určenie typu prvkov v poli

Inicializácia poľa:

dvojité hodnoty (5) = (23, 7, 32, 1, 66, 7, 11, 1, 44, 6);

C ++ má viacrozmerné pole:

Zadajte názov (veľkosť 1) (veľkosť 2)… .. (veľkosť N);

Inicializácia dvojrozmerného poľa:

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

Odovzdanie ukazovateľa do poľa zadaním názvu poľa bez indexu:

void dummyFunction (int * param) (

)

S indexom:

void dummyFunction (int param ()) (

)

Porovnanie medzi hlavami medzi vektormi C ++ vs Array (Infografika)

Nižšie je uvedený zoznam najlepších 8 rozdielov medzi vektorom a poľom v c ++

Kľúčový rozdiel medzi vektorom C ++ a poľom

Obe skupiny C ++ Vector vs Array sú na trhu populárne voľby; porozprávajme sa o niektorých hlavných rozdieloch medzi vektorom a poľom v c ++:

  1. Vektor sú sekvenčné kontajnery, zatiaľ čo pole je dátová štruktúra nižšej úrovne.
  2. Vektor je dodávaný vo forme šablóny triedy v C ++ s rodičom ako trieda Collection, zatiaľ čo Array je dátová štruktúra nižšej úrovne s vlastnými špecifickými vlastnosťami.
  3. Vektor nie je založený na indexe a má funkcie a konštruktory, zatiaľ čo polia sú dátové štruktúry založené na indexe, pričom prvý prvok je poskytnutý s najnižšou adresou a posledný prvok v poli je poskytnutý s najvyššou adresou.
  4. Vektor je svojou povahou dynamický, tj ich veľkosť sa automaticky zvyšuje s väčším počtom prvkov, zatiaľ čo pole sú pevnou štruktúrou veľkosti, po inicializácii nie je možné ich resetovať.
  5. Vektor je lepší na časté vkladanie a mazanie, zatiaľ čo polia sú oveľa vhodnejšie na častý prístup k scenárom prvkov.
  6. Vektor zaberá omnoho viac pamäte výmenou za schopnosť spravovať úložisko a dynamicky rásť, zatiaľ čo polia sú pamäťovo efektívne dátové štruktúry.
  7. Vektor je odvodený zo zbierky, ktorá obsahuje všeobecnejší typ údajov, zatiaľ čo pole je pevné a ukladá silnejší typ údajov.
  8. Vektor ukladá prvky do súvislého pamäťového miesta a umožňuje priamy prístup k prvku pomocou operátora indexu, zatiaľ čo pole obsahuje prvky s ich pamäťovým umiestnením, ktoré sú svojou povahou susediace.
  9. Vektor zaberie viac času pri prístupe k prvkom, zatiaľ čo priľahlá vlastnosť Array z nich robí vysoko efektívny prístup k prvkom.
  10. Vektor využíva generiká, je to v podstate verzia bezpečná pre daný typ, zatiaľ čo pole s bezpečným typom, vysoko efektívne z hľadiska rýchlosti a výkonu podporuje viac dimenzií.

Porovnávacia tabuľka vektorov C ++ vektora a poľa

Nižšie je najvyššie porovnanie medzi C ++ Vector vs Array

Základ porovnania medzi vektormi C ++ vs Arrayvektorrad
stvoreniaSekvenčný kontajner na ukladanie prvkovPôvodná štruktúra údajov založená na koncepte indexu
PamäťZaberá viac pamäte ako Arraypamäť efektívna
dĺžkaDĺžka sa líšiPevná dĺžka
používanieČasté vkladanie a mazanieČastý prístup k prvkom
resizeResize Vector je svojou povahou dynamickýZmena veľkosti polí je drahá
štruktúraŠablóna triedy, iba C ++Súvislé umiestnenie pamäte
indexovanieŠtruktúra bez indexuIndex založený na najnižšej adrese ako prvej a najvyššej na poslednej
prístupPrístupový prvok je časovo náročný, aj keď je založený na polohe prvkuPrístupový prvok je prevádzka s konštantným časom bez ohľadu na umiestnenie prvku

Záver - C ++ Vector vs Array

Oba typy vektorov C ++ vs Array sú odlišné typy, majú rôzne schopnosti a svoje údaje ukladajú oddelene. Tieto možnosti ukladania a dizajn dátových štruktúr C ++ Vector vs Array ich robia jedinečnými vlastnými spôsobmi. Pole má pevnú veľkosť a keď je už pridelená, nie je možné z nej pridávať ani odstraňovať položky, všetky prvky musia byť rovnakého typu. Ide teda o typovo bezpečnú a najúčinnejšiu lineárnu dátovú štruktúru z hľadiska rýchlosti a výkonu. Array tiež podporuje viac dimenzií. Vektor je trieda šablón a iba konštrukcia C ++. Na rozdiel od Array, majú dynamickú povahu, môžu automaticky meniť veľkosť pri častom vkladaní a odstraňovaní prvkov. Je to v podstate trieda šablón, ktorá obsahuje ukazovatele do haldy, takže keď sa vždy volá std: vector, vždy by sa volala „nová“. Zaručuje sa, že vektorové prvky budú susediace, ale zároveň sú prístupnejšie pomalšie kvôli prístupu založenom na ukazovateľoch. Človek musí mať najskôr prístup k ukazovateľovu, aby mohol získať svoje praktické údaje.

C ++ Vector vs Array sú lineárne dátové štruktúry, ktoré sa dobre hodia pre rôzne scenáre. Ak dôjde k častému vkladaniu a mazaniu a súčasne pamäť nie je obmedzením, potom je Vektor ideálnou voľbou, zatiaľ čo v scenároch, ako je častý prístup k požadovaným prvkom s obmedzením pamäte, je Array lepšou možnosťou. To všetko závisí od prípadu použitia a požiadavky. Pole je vždy svojím charakterom zoznam, ale vektor je trieda šablón a to isté ako dynamické pole. Pole umožňuje oba druhy prístupu, priamy aj sekvenčný, zatiaľ čo Vector umožňuje iba sekvenčný prístup. A to preto, že spôsob, akým sú tieto dátové štruktúry uložené v pamäti. Pretože vektorové prvky sú umiestnené v súvislom pamäťovom bloku, je možné ich ľahko prechádzať pomocou iterátora.

Existuje niekoľko funkcií dostupných v C ++ s Vectorom ako triedou šablón, všetky funkcie poskytujú okolo Vektora nejakú funkčnosť, tj begin (), end (), rbegin (), rend (), cbegin (), cend (), crbegin (), crend ​​(), size (), max_size (), capacity (), resize (), empty (), reverse () a shrink_to_fit (). Pole je veľmi spojené s hardvérovou predstavou súvislej súvislej pamäte, pričom každý prvok má rovnakú veľkosť. Obidve myšlienky vektorov C ++ Vector vs Array sa zostavujú celkom dobre na základe scenárov. Na konci dňa sa všetko scvrkáva na požiadavku. Vývojár musí zvážiť požiadavku projektu, a tak urobiť akékoľvek rozhodnutie.

Odporúčaný článok

Toto bol návod na najväčšie rozdiely medzi vektormi C ++ vs Array. Ďalej diskutujeme o kľúčových rozdieloch C ++ Vector vs Array s infografikou a porovnávacou tabuľkou. Ak sa chcete dozvedieť viac, môžete sa pozrieť aj na nasledujúce články C ++ Vector vs Array -

  1. Referencia C ++ vs ukazovateľ
  2. C # Array vs List
  3. Výkonnosť C verzus C ++
  4. Zoznam Java a zoznam polí
  5. Vyžadovať verzus import: Aké sú výhody
  6. C vs C #: Aké sú funkcie

Kategórie: