0Pricing
C++ Academy · Lektion

Vector vs. std::array vs. C-Array

Vergleichen Sie die drei sequenziellen Container und wählen Sie anhand von Größe, Besitzverhältnissen und Leistung den passenden aus.

Vector vs. std::array vs. C-Array ist eine kostenlose C++ Academy-Lektion auf CoddyKit. Dies ist Lektion 4 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des C++ Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der C++ Academy-Kurs umfasst insgesamt 4 Lektionen.

Drei sequenzielle Container

C++ bietet drei Möglichkeiten, eine zusammenhängende Sequenz zu speichern:

  • std::vector — variable Größe, Speicherung auf dem Heap
  • std::array — zur Compile-Zeit festgelegte Größe, Speicherung auf dem Stack
  • C-style array — feste Größe, hardwarenah

C-Arrays

Die älteste Form. Die Größe ist Bestandteil des Typs. Bei der Übergabe an Funktionen wird das Array zu einem Zeiger, wodurch die Größe verloren geht.

int a[5] = {1, 2, 3, 4, 5};
std::cout << a[2];   // 3

Probleme mit C-Arrays

In den meisten Kontexten verlieren sie ihre Größe, führen keine Bereichsprüfung durch und können leicht falsch verwendet werden. Bevorzugen Sie in neuem Code std::array oder std::vector.

std::array (C++11)

Eine dünne Hülle um ein Array mit fester Größe. Die Performance entspricht der eines C-Arrays, aber der Typ ist korrekt definiert und es stehen geeignete Memberfunktionen zur Verfügung.

#include <array>
std::array<int, 5> a = {1, 2, 3, 4, 5};
std::cout << a.size();   // 5
std::cout << a.at(2);    // bounds-checked

std::array bleibt auf dem Stack

Im Gegensatz zu einem vector speichert std::array seine Elemente direkt. Es findet keine Heap-Allokation statt. Die Größe ist ein Template-Parameter.

std::vector für variable Größe

Verwenden Sie std::vector, wenn die Größe zur Compile-Zeit nicht bekannt ist oder sich zur Laufzeit ändern wird.

Leistungsvergleich

Bei festen Größen ist die Performance aller drei Varianten ähnlich. std::vector verursacht einen kleinen Mehraufwand durch die Verwaltung von Zeiger und Größe sowie durch eine zusätzliche Indirektion.

Übergabe an Funktionen

Übergeben Sie vector oder std::array als const-Referenz, um Kopien zu vermeiden. C-Arrays sollten beim Ausleihen durch std::span (C++20) ersetzt werden.

void process(const std::vector<int>& v);
void process(const std::array<int, 5>& a);

#include <span>
void process(std::span<const int> data);  // accepts both

std::span (C++20)

Eine nicht besitzende Sicht auf eine zusammenhängende Sequenz. Sie entspricht einem Paar aus Zeiger und Länge. Sie akzeptiert vector, std::array und C-Arrays einheitlich.

Wann Sie welchen Container wählen

Entscheidungsbaum:

  • Variable Größe erforderlich → std::vector
  • Feste Größe, keine Allokation → std::array
  • Ausleihen ohne Besitz → std::span
  • Zusammenspiel mit C-Code → C-Array

Konvertierung zwischen ihnen

Sie können Elemente mithilfe von Ranges oder Algorithmen zwischen den Typen kopieren.

std::array<int, 3> a = {1, 2, 3};
std::vector<int> v(a.begin(), a.end());
int c[3];
std::copy(a.begin(), a.end(), c);

Kurzer Test

Welcher Container speichert seine Elemente auf dem Stack und hat eine zur Compile-Zeit bekannte Größe?

Zusammenfassung

Bevorzugen Sie std::vector für variable Größen und std::array für feste Größen. C-style arrays sind in modernem Code nur selten die beste Wahl. Verwenden Sie std::span, um eine Sequenz auszuleihen, ohne sie zu besitzen.

Häufig gestellte Fragen

Ist die Lektion „Vector vs. std::array vs. C-Array“ kostenlos?

Ja — der vollständige Text von „Vector vs. std::array vs. C-Array“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des C++ Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der C++ Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Vector vs. std::array vs. C-Array“?

Vergleichen Sie die drei sequenziellen Container und wählen Sie anhand von Größe, Besitzverhältnissen und Leistung den passenden aus. Du übst C++ Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um C++ Academy zu starten?

Keine Vorkenntnisse erforderlich. C++ Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 4 von 4.

Wie lange dauert die Lektion „Vector vs. std::array vs. C-Array“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser C++ Academy-Lektion Code schreiben und ausführen?

Ja. Jede C++ Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Grundlagen von std::vector: push_back, size, capacity
  2. Vektoren durchlaufen: Index, range-for, Iteratoren
  3. Vektoren ändern: insert, erase, clear
  4. Vector vs. std::array vs. C-Array
← Zurück zu C++ Academy