Unterschied zwischen C ++ - Vektor und Array

Vektoren sind Sequenzcontainer, die kontinuierliche Speicherorte zum Speichern von Elementen verwenden. Sie können den Speicher verwalten und dynamisch und effizient wachsen. Diese Fähigkeiten haben ihren Preis: Vektoren verbrauchen mehr Speicher als die Fähigkeit, Speicher zu verwalten und ihre Größe dynamisch zu erhöhen.

Vektor v; Dabei ist v die Variable vom Typ Vector, in der ganzzahlige Elemente gespeichert werden. Dies wird als Initialisierung des Vektors bezeichnet:

Speichern Sie eine zufällige Ganzzahl mit der Funktion „push_back“:

v.push_back (11);

v.push_back (12);

v.push_back (13);

v.push_back (14);

Verwenden Sie die Funktion „pop_back ()“, um das letzte Element zu entfernen:

v.pop_back ();

Um das erste Element zu entfernen, können wir die Funktion erase () verwenden:

v.erase (v.begin ());

Erster Elementzugriff mit Funktion front ();

v.front ();

Letzter Elementzugriff mit Funktion back ();

v.back ();

Ein Array speichert eine sequentielle Sammlung von Elementen desselben Typs mit fester Größe. Es wird zum Speichern einer Sammlung von Daten verwendet, aber das Array kann als Sammlung von Variablen desselben Typs betrachtet werden, die an zusammenhängenden Speicherorten gespeichert sind. Alle Arrays bestehen aus zusammenhängenden Speicherplätzen, wobei die niedrigste Adresse dem ersten Element und die höchste Adresse dem letzten Element entspricht.

Deklarieren Sie ein Array in C ++:

Typ array_name (array_size); // Typ wird verwendet, um den Typ der Elemente im Array anzugeben

Ein Array initialisieren:

Doppelwerte (5) = (23, 7, 32, 1, 66, 7, 11, 1, 44, 6);

C ++ hat ein mehrdimensionales Array:

Typname (Größe1) (Größe2)… .. (GrößeN);

Initialisieren eines zweidimensionalen Arrays:

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

Übergeben eines Zeigers an ein Array durch Angabe eines Arraynamens ohne Index:

void dummyFunction (int * param) (

)

Mit Index:

void dummyFunction (int param ()) (

)

Head-to-Head Vergleich zwischen C ++ Vector und Array (Infografik)

Unten ist der Top 8 Unterschied zwischen Vektor und Array in c ++

Hauptunterschied zwischen C ++ - Vektor und Array

Sowohl C ++ Vector als auch Array sind auf dem Markt sehr beliebt. Lassen Sie uns einige der Hauptunterschiede zwischen Vektor und Array in c ++ diskutieren:

  1. Vektoren sind sequentielle Container, während Array eine Datenstruktur niedrigerer Ebene ist.
  2. Vector wird in C ++ in Form einer Vorlagenklasse mit einem übergeordneten Element als Collection-Klasse ausgeliefert, während Array die Datenstruktur der unteren Ebene mit ihren eigenen spezifischen Eigenschaften ist.
  3. Vektor ist nicht indexbasiert und hat Funktionen und Konstruktoren, während Arrays indexbasierte Datenstrukturen sind, bei denen die niedrigste Adresse für das erste Element und die höchste Adresse für das letzte Element im Array bereitgestellt wird.
  4. Der Vektor ist dynamischer Natur, dh seine Größe erhöht sich automatisch mit der Einfügung weiterer Elemente, während Arrays eine Struktur mit fester Größe aufweisen, die nach der Initialisierung nicht zurückgesetzt werden kann.
  5. Vector eignet sich besser zum häufigen Einfügen und Löschen, während Arrays besser für den häufigen Zugriff auf Elementszenarien geeignet sind.
  6. Vector belegt viel mehr Speicher als die Fähigkeit, Speicher zu verwalten und dynamisch zu wachsen, während Arrays eine speichereffiziente Datenstruktur darstellen.
  7. Der Vektor wird von der Sammlung abgeleitet, die einen allgemeineren Datentyp enthält, während das Array fest ist und einen stärkeren Datentyp speichert.
  8. Vector speichert Elemente an einem zusammenhängenden Speicherort und ermöglicht den direkten Zugriff auf ein Element mithilfe des Indexoperators, während Array die Elemente mit ihrem Speicherort enthält, die zusammenhängender Natur sind.
  9. Der Vektor benötigt mehr Zeit für den Zugriff auf die Elemente, wohingegen die zusammenhängenden Eigenschaften von Array den Zugriff auf die Elemente sehr effizient machen.
  10. Generika mit vektorieller Hebelwirkung sind im Grunde genommen eine typsichere Version, wohingegen Arrays mit ihrer typsicheren, in Bezug auf Geschwindigkeit und Leistung hocheffizienten Version mehrere Dimensionen unterstützen.

C ++ Vector vs Array Vergleichstabelle

Unten sehen Sie den Vergleich zwischen C ++ Vector und Array

Die Vergleichsbasis zwischen C ++ Vector und ArrayVektorArray
SchaffungSequentieller Container zum Speichern von ElementenUrsprüngliche Datenstruktur, basierend auf dem Indexkonzept
ErinnerungBelegen Sie mehr Speicher als ArraySpeichereffizient
LängeLänge variierenFeste größe länge
VerwendungHäufiges Einfügen und LöschenHäufiger Zugriff auf Elemente
Größe ändernVektorgröße ändern ist von Natur aus dynamischDas Ändern der Größe von Arrays ist teuer
StrukturTemplate Klasse, nur C ++ KonstruktAngrenzender Speicherort
IndizierungNicht indexbasierte StrukturIndex basierend auf der niedrigsten Adresse als erste und der höchsten Adresse als letzte
ZugriffDer Zugriff auf das Element ist zeitaufwändig, auch wenn dies auf der Position des Elements basiertDas Zugriffselement ist unabhängig vom Elementstandort ein Betrieb mit konstanter Zeit

Fazit - C ++ Vector vs. Array

Sowohl C ++ Vector als auch Array sind unterschiedliche Typen mit unterschiedlichen Funktionen und speichern ihre Daten auf unterschiedliche Weise. Diese Speichermöglichkeiten und das Design beider C ++ - Vektor- und Array-Datenstrukturen machen sie auf ihre eigene Weise einzigartig. Ein Array hat eine feste Größe, und sobald es zugewiesen ist, kann man keine Elemente hinzufügen oder daraus entfernen. Außerdem müssen alle Elemente vom gleichen Typ sein. Somit ist es eine typsichere und effizienteste lineare Datenstruktur in Bezug auf Geschwindigkeit und Leistung. Array unterstützt auch mehrere Dimensionen. Vector ist eine Template-Klasse und ein reines C ++ - Konstrukt. Im Gegensatz zu Array sind sie dynamischer Natur und können bei häufigem Einfügen und Löschen von Elementen die Größe automatisch ändern. Es ist im Wesentlichen eine Template-Klasse, die Zeiger auf den Heap enthält. Wenn also immer std: vector aufgerufen wird, wird immer "new" aufgerufen. Es ist garantiert, dass Vektorelemente zusammenhängend sind, aber gleichzeitig sind sie aufgrund des zeigerbasierten Ansatzes für den Zugriff langsamer. Man muss zuerst auf einen Zeiger zugreifen können, um seine praktischen Daten zu erhalten.

C ++ Vector vs Array ist eine lineare Datenstruktur, die für verschiedene Szenarien gut geeignet ist. Wenn häufiges Einfügen und Löschen auftritt und gleichzeitig Speicher keine Einschränkung darstellt, ist Vector die ideale Wahl, während in Szenarien wie dem häufigen Zugriff auf Elemente, für die eine Speicherbeschränkung erforderlich ist, Array die bessere Option darstellt. Es hängt alles von Anwendungsfall und Anforderung ab. Ein Array ist immer eine Liste in der Natur, aber ein Vektor ist eine Schablonenklasse und dasselbe wie ein dynamisches Array. Das Array erlaubt sowohl direkten als auch sequentiellen Zugriff, während Vector nur sequentiellen Zugriff erlaubt. Und das liegt daran, wie diese Datenstrukturen im Speicher gespeichert sind. Da Vektorelemente in einem zusammenhängenden Speicherblock abgelegt sind, können sie leicht mit einem Iterator durchlaufen werden.

In C ++ sind mehrere Funktionen mit Vector als Template-Klasse verfügbar. Alle Funktionen bieten Funktionen rund um Vector, z. B. begin (), end (), rbegin (), rend (), cbegin (), cend (), crbegin (), crend ​​(), size (), max_size (), capacity (), resize (), empty (), reverse () und shrink_to_fit (). Ein Array ist stark an den Hardware-Begriff des kontinuierlichen, zusammenhängenden Speichers gebunden, wobei jedes Element die gleiche Größe hat. Beide Ideen für C ++ - Vektoren im Vergleich zu Arrays stimmen auf der Grundlage von Szenarien recht gut überein. Am Ende des Tages läuft alles auf die Anforderung hinaus. Ein Entwickler muss die Projektanforderungen abwägen und somit eine Entscheidung treffen.

Empfohlener Artikel

Dies war eine Anleitung zu den wichtigsten Unterschieden zwischen C ++ Vector und Array. Hier diskutieren wir auch die wichtigsten Unterschiede zwischen C ++ - Vektor und Array mit Infografiken und die Vergleichstabelle. Sie können auch einen Blick auf die folgenden Artikel zu C ++ Vector vs Array werfen, um mehr zu erfahren -

  1. C ++ Referenz vs Zeiger
  2. C # Array vs Liste
  3. C vs C ++ Leistung
  4. Java-Liste vs Array-Liste
  5. Require vs Import: Was sind die Vorteile
  6. C vs C #: Was sind die Funktionen