home |
16. Vektoren |
|
Druckversion dieser Seite |
Ziele
|
|
Definition von Vektoren |
||
Mit der Vektor-Schreibweise können wir in nur einer Zeile viele Objekte von einem Datentypen erzeugen. Als Beispiel nehmen wir eine Messreihe, bei der tausend Messwerte erfasst und gespeichert werden müssen. Die Messwerte sind als double zu speichern. Natürlich könnten wir hingehen und tausend double Variablen definieren : |
||
|
||
Das macht aber keinen Sinn, viel einfacher ist folgendes : | ||
|
||
Zugriff auf Vektorelemente |
||
Um auf die einzelnen Werte zuzugreifen verwenden wir folgende Schreibweise : | ||
|
||
Die Zahl in den [] eckigen Klammern ist der sogenannte Index. Als Index können Ganzzahlen verwendet werden, sowie Ganzzahlvariablen. Genauso können aber auch Aufzählungen (enum) verwendet werden. Zu beachten ist folgendes: Der erste Wert im Vektor hat den Index 0! Der letzte Wert im Vektor hat als Wert die Grösse des Vektors minus 1! | ||
Beispiel 1 |
||
|
||
Beispiel 2 |
||
|
||
Initialisierung von Vektoren |
||
Es ist möglich Vektoren direkt zu initialisieren: | ||
|
||
Die einzelnen Werte sind mit Kommas voneinander getrennt. Mit einer Initialisierungsliste ist es auch nicht nötig die Länge des Vektors anzugeben: | ||
|
||
Wird die Anzahl angegeben, enthält aber die Initialisierungsliste weniger Elemente als der Vektor, werden die restlichen mit 0 belegt. Auf diese Art ist es einfach ein Vektor mit 0 zu initialisieren: | ||
|
||
Ein Vektor kann nicht einem anderen Vektor zugewiesen werden. Es ist also nicht möglich solchen Code zu schreiben: | ||
|
||
Um diesen Vektor zu kopieren müsste man folgenden Code schreiben, (man spricht von elementweisem Kopieren): | ||
|
||
C-Strings |
||
C-Strings sind Vektoren von char-Elementen mit einer speziellen Eigenschaft, das letzte Element enthält den Wert 0. Das 0 bezeichnet das Ende eines C-Strings. Einem solchen C-String kann mit Text gefüllt werden. zum Beispiel so: | ||
|
||
Hinter dem t von “Welt” setzt der Compiler eine 0 ein. Dadurch braucht der Text 11 Bytes, obwohl der Text nur 10 Zeichen lang ist. Nur so ist es möglich das Ende eines Textes zu markieren. Einen solchen Text kann man auch mit cout ausgeben: | ||
|
||
Das Programm weiss nur aufgrund der abschliessenden 0 im Speicher hinter dem ‚t’ wo die Ausgabe beendet werden muss. Anders ist es nicht möglich bei einem C-String die Länge festzustellen. Wichtig ist auch, dass man immer daran denkt, dass am Ende diese 0 hinzugehört und man auch genug Speicher anlegt: | ||
|
||
Von der C-Sprache her gibt es einige Funktionen, die mit den C-Strings arbeiten (die string-Klasse gibt es erst seit C++!), diese beginnen meist mit „str“ (z.B. strlen(), strcpy(), strcmp()). | ||
Klassen-Arrays |
||
Erzeugt man einen Vektor mit einer Klasse als Datentyp, spricht man von einem Klassen-Array. Der Vektor von strings aus dem Beispiel oben ist also ein sogenanntes string-Array. Man kann solche Arrays auch initialisieren: | ||
|
||
Beispiel mit unserer ZeichenFlaeche |
||
Auch mit den Klassen, die wir aus der Zeichnen-Übung kennen ist es möglich Vektoren (Arrays) zu bilden: | ||
|