Rozdíl mezi vektorem C ++ vs Array
Vektory jsou sekvenční kontejnery, které využívají místa nepřetržitého skladování k ukládání prvků. Mohou spravovat úložiště a efektivně růst dynamicky. Tyto schopnosti přicházejí za cenu: vektory spotřebovávají více paměti výměnou za schopnost zpracovat úložiště a dynamicky se rozšiřovat.
vektor v; kde v je proměnná typu Vector store integer elements. Toto je známé jako inicializace vektoru:
Uložte náhodné celé číslo s funkcí „push_back“:
v.push_back (11); v.push_back (12); v.push_back (13); v.push_back (14); Pomocí funkce „pop_back ()“ odstraníte poslední prvek: v.pop_back (); K odstranění prvního prvku můžeme použít funkci erase (): v.erase (v.begin ()); Přístup k prvnímu prvku s funkční přední stranou (); v.front (); Poslední přístup k prvku s funkcí zpět (); v.back (); |
Pole ukládá sekvenční kolekci prvků stejného typu s pevnou velikostí. Používá se k ukládání kolekcí dat, ale pole lze považovat za kolekci proměnných stejného typu uložených na sousedních paměťových místech. Všechna pole se skládají z přilehlých paměťových míst, přičemž nejnižší adresa odpovídá prvnímu prvku a nejvyšší adresa poslednímu prvku.
Deklarovat pole v C ++:
type array_name (array_size); // Typ se používá k určení typu prvků v poli Inicializace pole: dvojité hodnoty (5) = (23, 7, 32, 1, 66, 7, 11, 1, 44, 6); C ++ má vícerozměrné pole: Zadejte název (velikost1) (velikost2)… .. (velikostN); Inicializace dvojrozměrného pole: int a (3) (4) = ((0, 1, 2), (4, 5, 6, 7), (8, 9, 10, 11)); Předání ukazatele do pole zadáním názvu pole bez indexu: void dummyFunction (int * param) ( ) S indexem: void dummyFunction (int param ()) ( ) |
Srovnání hlava-hlava mezi C ++ vektorem a polem (infografika)
Níže je osm nejlepších rozdílů mezi vektorem a polem v c ++
Klíčový rozdíl mezi C ++ Vector vs Array
Oba C ++ Vector vs Array jsou populární volby na trhu; pojďme diskutovat o některých hlavních rozdílech mezi vektorem a polem v c ++:
- Vektor jsou sekvenční kontejnery, zatímco pole je datová struktura nižší úrovně.
- Vektor je dodáván ve formě třídy šablon v C ++ s nadřazenou třídou Collection, zatímco Array je datová struktura nižší úrovně s vlastními specifickými vlastnostmi.
- Vektor není založen na indexu a má funkce a konstruktéry, zatímco pole jsou datová struktura založená na indexu, přičemž první prvek je poskytován s nejnižší adresou a poslední prvek v poli je poskytován nejvyšší adresa.
- Vektor je ve své podstatě dynamický, tj. Jeho velikost se automaticky zvyšuje s více vložením prvku, zatímco pole jsou pevně strukturovaná struktura, jakmile je inicializovaná, nelze resetovat.
- Vektor je lepší pro časté vkládání a mazání, zatímco pole jsou mnohem vhodnější pro častý přístup k scénářům prvků.
- Vektor zabírá mnohem více paměti výměnou za schopnost spravovat úložiště a dynamicky růst, zatímco pole jsou datově efektivní struktura paměti.
- Vektor je odvozen z kolekce, která obsahuje obecnější datový typ, zatímco pole je pevné a ukládá silnější datový typ.
- Vektorové ukládají prvky do souvislého paměťového umístění a umožňují přímý přístup k prvku pomocí operátoru indexu, zatímco pole obsahuje prvky s jejich paměťovým umístěním, které jsou svou povahou souvislé.
- Vektor zabere více času v přístupu k elementům, zatímco sousedící vlastnost Array z nich dělá vysoce efektivní pro přístup k elementům.
- Vector pákový generik, to je v podstatě typ-bezpečná verze, zatímco Arrays s jeho typ-bezpečný, vysoce efektivní, pokud jde o rychlost a výkon, podporuje více dimenzí.
Srovnávací tabulka vektorů a polí C ++
Níže je nejvyšší srovnání mezi C ++ Vector vs Array
Základ srovnání mezi C ++ Vector vs Array | Vektor | Pole |
Stvoření | Sekvenční kontejner pro uložení prvků | Původní struktura dat založená na konceptu indexu |
Paměť | Zabírá více paměti než Array | Paměťově efektivní |
Délka | Délka se liší | Pevná délka délky |
Používání | Časté vkládání a mazání | Častý přístup k prvkům |
Změnit velikost | Resize Vector je svou povahou dynamický | Změna velikosti polí je drahá |
Struktura | Třída šablony, konstrukce C ++ | Přilehlé umístění paměti |
Indexování | Struktura bez indexu | Index založený na nejnižší adrese jako první a nejvyšší na poslední adrese |
Přístup | Přístupový prvek je časově náročný, i když je založen na poloze prvku | Přístupový prvek je operace s konstantním časem bez ohledu na umístění prvku |
Závěr - C ++ Vector vs Array
Oba C ++ Vector vs Array jsou odlišné typy, mají různé schopnosti a ukládají svá data odděleně. Díky těmto schopnostem ukládání a návrhu datových struktur C ++ Vector vs Array jsou jejich vlastní způsoby jedinečné. Pole má pevnou velikost a jakmile je přiděleno, nelze z něj přidávat ani odebírat položky, také všechny prvky musí být stejného typu. Jedná se tedy o typově bezpečnou a nejúčinnější lineární datovou strukturu z hlediska rychlosti a výkonu. Array také podporuje více dimenzí. Vektor je třída šablony a konstrukce C ++. Na rozdíl od Array, jsou dynamické povahy, mohou automaticky měnit velikost při častém vkládání a mazání prvků. Jde v podstatě o třídu šablon, která obsahuje ukazatele do haldy, takže když se vždy volá std: vector, vždy by se nazývalo „nové“. Je zaručeno, že vektorové prvky budou souvislé, ale zároveň jsou přístupnější pomaleji kvůli přístupu založeném na ukazatelích. Jeden potřebuje mít přístup k ukazateli nejprve dostat jejich hands-on data.
C ++ Vector vs Array jsou lineární datové struktury, které se dobře hodí pro různé scénáře. Pokud dochází k častému vkládání a mazání a současně paměť není omezením, pak je Vector ideální volbou, zatímco ve scénářích, jako je častý přístup prvků požadovaných s omezením paměti, je Array lepší volbou. Vše záleží na případu použití a požadavku. Pole je vždy přirozeně seznam, ale vektor je třída šablony a stejná jako dynamické pole. Pole umožňuje oba druhy přístupu, přímý i sekvenční, zatímco Vector umožňuje pouze sekvenční přístup. A to proto, že způsob, jakým jsou tyto datové struktury uloženy v paměti. Protože vektorové prvky jsou umístěny v souvislém paměťovém bloku, lze je snadno procházet pomocí iterátoru.
V C ++ je k dispozici více funkcí s Vector jako třídou šablony, všechny funkce poskytují kolem Vectoru nějaký druh funkcí, tj. Begin (), end (), rbegin (), rend (), cbegin (), cend (), crbegin (), crend (), size (), max_size (), kapacita (), resize (), empty (), reverse () a shrink_to_fit (). Pole je velmi svázáno s hardwarovou představou spojité, souvislé paměti, přičemž každý prvek má stejnou velikost. Obě myšlenky C ++ Vector vs Array se sestavují docela dobře, na základě scénářů. Na konci dne se vše scvrkne na požadavek. Vývojář musí zvážit požadavky projektu a tak učinit jakékoli rozhodnutí.
Doporučený článek
Toto byl průvodce nejvyššími rozdíly mezi C ++ Vector vs Array. Zde diskutujeme také klíčové rozdíly v C ++ Vector vs Array s infografikou a srovnávací tabulkou. Další informace naleznete také v následujících článcích C ++ Vector vs Array -
- C ++ reference vs ukazatel
- C # Array vs List
- C vs C ++ výkon
- Seznam Java vs Seznam polí
- Vyžadovat vs import: Jaké jsou výhody
- C vs C #: Jaké jsou funkce