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 ++:
- Vektor sú sekvenčné kontajnery, zatiaľ čo pole je dátová štruktúra nižšej úrovne.
- 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.
- 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.
- 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ť.
- Vektor je lepší na časté vkladanie a mazanie, zatiaľ čo polia sú oveľa vhodnejšie na častý prístup k scenárom prvkov.
- 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.
- Vektor je odvodený zo zbierky, ktorá obsahuje všeobecnejší typ údajov, zatiaľ čo pole je pevné a ukladá silnejší typ údajov.
- 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.
- 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.
- 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 Array | vektor | rad |
stvorenia | Sekvenčný kontajner na ukladanie prvkov | Pôvodná štruktúra údajov založená na koncepte indexu |
Pamäť | Zaberá viac pamäte ako Array | pamäť efektívna |
dĺžka | Dĺžka sa líši | Pevná dĺžka |
používanie | Časté vkladanie a mazanie | Častý prístup k prvkom |
resize | Resize 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 indexu | Index založený na najnižšej adrese ako prvej a najvyššej na poslednej |
prístup | Prístupový prvok je časovo náročný, aj keď je založený na polohe prvku | Prí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 -
- Referencia C ++ vs ukazovateľ
- C # Array vs List
- Výkonnosť C verzus C ++
- Zoznam Java a zoznam polí
- Vyžadovať verzus import: Aké sú výhody
- C vs C #: Aké sú funkcie