Eine sichere Alternative zum Array!
#include <vector>
std::vector <int> messungen = { 12, 10, 11, 12, 10 };
std::vector <string> klasse_1b = { "eva", "tim", "lin", "noe" };
std::vecrot <Class> token_table = { "n", 5, "+", 2, "*", 4 };
Wertzuweisung
messungen[1] = 11;
token_table[2] = { "*", 3 }
Vektor per Referenz übergeben
Damit nicht alle Werte des Vektors übergeben werden müssen, wird nur die Adresse übergeben (siehe Pointer).
void print( const vektor <int>& messungen){
. // code
}
Zur Referenzübergabe gehört sowohl das & (Adresse mitgeben).
Mit 0 oder leeren Strings initialisieren
std::vector <int> messungen( 5 );
std::vector <string> klasse_1b( 4 );
Achtung: geht nur, wenn man mit -std=c++11 kompiliert.
for eines Vektors
for (int i : messungen){
. (if i = 5 ) {
. //
. }
}
Das verkürzte For für einen Vektor gibt zu Beginn den Datentyp an und nach dem Doppelpunkt die Länge des Vekorts. Dann geht das For durch jedes Elements des Vektors.
for eines Vektors aus einem Klassen-Datentyp
for (Token t: token_table){
. (if t.nummer == 5) {
. //
. }
}
Wieder zuerst der Datentyp (Token) und dann den Vektor.
Bei der interenen Auswertung, muss gesagt werden, auf welchen Variabelntyp der Klasse sich die Auswertung bezieht. (Bei der Klasse Token hat jeder Index zwei Variablen: string operation und int nummer.)
Funktionen für Vektorbearbeitung
int anzahl = messungen.size();
messungen.sort();
Daten in Vector einlesen
vector <int> data;
int current_element;
while ( cin ){
cin >> current_element
data.push_back ( current_element );
}
– Die Funktion push_back() hängt neue Daten hinten an.
– Sie vergrössert die Vektorgrösse damit immer um 1