Was sind die Unterschiede zwischen einem Array und einem Vektor in C ++? Ein Beispiel für die Unterschiede könnten Bibliotheken, Symbolik, Fähigkeiten usw. sein.
Array
Arrays enthalten eine bestimmte Anzahl von Elementen eines bestimmten Typs. Damit der Compiler beim Kompilieren des Programms den erforderlichen Speicherplatz reservieren kann, müssen Sie den Typ und die Anzahl der Elemente angeben, die das Array bei seiner Definition enthalten soll. Der Compiler muss diesen Wert beim Kompilieren des Programms ermitteln können. Sobald ein Array definiert wurde, verwenden Sie den Bezeichner für das Array zusammen mit einem Index, um auf bestimmte Elemente des Arrays zuzugreifen. [...] Arrays sind nullindiziert; Das heißt, das erste Element befindet sich am Index 0. Dieses Indexierungsschema zeigt die enge Beziehung in C ++ zwischen Zeigern und Arrays und die Regeln an, die die Sprache für die Zeigerarithmetik definiert.
- C ++ - Taschenreferenz
Vektor
Ein Vektor ist eine dynamisch große Folge von Objekten, die einen
operator[]
Direktzugriff im Array-Stil ermöglicht. Die Member-Funktionpush_back
kopiert ihre Argumente über den Kopierkonstruktor, fügt diese Kopie als letztes Element im Vektor hinzu und erhöht ihre Größe um eins.pop_back
macht genau das Gegenteil, indem das letzte Element entfernt wird. Das Einfügen oder Löschen von Elementen am Ende eines Vektors benötigt eine amortisierte konstante Zeit, und das Einfügen oder Löschen von einem anderen Ort benötigt lineare Zeit. Dies sind die Grundlagen von Vektoren. Sie haben noch viel mehr zu bieten. In den meisten Fällen sollte ein Vektor Ihre erste Wahl gegenüber einem Array im C-Stil sein. Erstens sind sie dynamisch dimensioniert, was bedeutet, dass sie nach Bedarf wachsen können. Sie müssen nicht alle möglichen Untersuchungen durchführen, um eine optimale statische Größe zu ermitteln, wie im Fall von C-Arrays. Ein Vektor wächst nach Bedarf und kann bei Bedarf manuell vergrößert oder verkleinert werden. Zweitens bieten Vektoren die Überprüfung von Grenzen mit derat
Elementfunktion (jedoch nicht mitoperator[]
), damit Sie etwas tun können, wenn Sie auf einen nicht vorhandenen Index verweisen, anstatt nur zu beobachten, wie Ihr Programm abstürzt oder schlimmer noch, und die Ausführung mit beschädigten Daten fortsetzen.- C ++ Kochbuch