C ++ Vector vs Array - Naučte se 8 důležitých rozdílů

Obsah:

Anonim

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 ++:

  1. Vektor jsou sekvenční kontejnery, zatímco pole je datová struktura nižší úrovně.
  2. 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.
  3. 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.
  4. 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.
  5. 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ů.
  6. 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.
  7. Vektor je odvozen z kolekce, která obsahuje obecnější datový typ, zatímco pole je pevné a ukládá silnější datový typ.
  8. 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é.
  9. 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.
  10. 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 ArrayVektorPole
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ž ArrayPaměťově efektivní
DélkaDé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 velikostResize Vector je svou povahou dynamickýZměna velikosti polí je drahá
StrukturaTřída šablony, konstrukce C ++Přilehlé umístění paměti
IndexováníStruktura bez indexuIndex založený na nejnižší adrese jako první a nejvyšší na poslední adrese
PřístupPřístupový prvek je časově náročný, i když je založen na poloze prvkuPří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 -

  1. C ++ reference vs ukazatel
  2. C # Array vs List
  3. C vs C ++ výkon
  4. Seznam Java vs Seznam polí
  5. Vyžadovat vs import: Jaké jsou výhody
  6. C vs C #: Jaké jsou funkce