Ein Vektor ist die "intelligentere" Ausprägung eines Datenfeldes (array). Die Elemente eines Vektors liegen im Speicher hintereinander - wie beim Datenfeld. Ein Vektor besitzt somit die gleichen Vor- und Nachteile wie ein Datenfeld.
Genauer betrachtet ist ein Vektor ein Objekt, das ein Datenfeld aufbaut und verwaltet. Er "kennt" zu jeder Zeit seine Größe und sein Fassungsvermögen. Er stellt Elementfunktionen (Schnittstellen) zur Verfügung, mit denen Größe und Fassungsvermögen abgefragt werden können.
Die wichtigsten Eigenschaften und Verhaltensweisen eines Vektors sind:
Insbesondere der letzte Punkt zeigt die Problematik beim Vergrößern eines Vektors:
Wird einem Vektor ein Element hinzugefügt und dabei dessen Kapazität überschritten, so werden folgende Schritte durchgeführt:
Soll das Element nicht am Ende des Vektors eingefügt werden, dann müssen
Wenn Sie einen Vektor als Container verwenden und häufige Einfügungen vornehmen wollen, dann sollten
Besonders Wichtig!
Alle Iteratoren für den Zugriff auf einen Vektor können nach einer Einfügung ungültig sein.
Dies liegt an einer möglichen Neuallokation von Speicher.
Es liegt an Ihnen, die Gültigkeit von Iteratoren zu beachten.
Falls Sie sicherstellen, dass durch ein Einfügen keine Neuallokation erforderlich ist
(Vektorkapazität hinreichend), dann referenzieren nur alle Iteratoren auf Elemente
hinter der Einfügestelle andere Elemente als vor dem Einfügen.
Ein alter Endeiterator referenziert beispielsweise nicht mehr das Vektorende.
Beim Entfernen von Elementen können alle Iteratoren, die hinter die entfernten Elemente gezeigt haben, ungültig werden. Insbesondere ein alter Endeiterator wird mit Sicherheit ungültig.
Im Zweifelsfalle sind also bei Bedarf Iteratoren vom Vektorobjekt zu holen und nicht etwa alte, in Variablen gespeicherte Iteratorwerte zu verwenden.
Informationen zum Klassentemplate vector finden Sie beispielsweise bei Silicon Graphics Computer Systems, Inc..
weiter mit dem Anlegen eines Vektors