Vector und Tuples

vector

Ein gängiges Problem ist, dass mann nicht nur einzelne Werte speichern und ansprechen möchte, sondern dass man viele Werte gemeinsam in einer Art Liste speichert, z.B. Messreihe von numerischen Werten, E-Mail Liste von Studenten im C++ Kurs, etc.

Es gibt verschiedene Möglichkeiten wie man das in C++ machen kann, in den meisten Fällen ist der STL Vector (vector<Type>) empfohlen. Dieser ist sehr flexibel in Bezug auf dynamisches Erzeugen, Erweitern, Initialisieren, Kopieren, etc.


#include <vector>
// ...

vector<int> n(20); // Deklaration von int vector mit 20 Elementen
// direkter Zugriff auf einzelne Elemente mittels [index]
// aber Vorsicht, C/C++ zaehlt von 0 bis N-1
n[0] = ...; //1. Element
...
n[19] = ...;// Letztes Element

// Auch direkte Initialisierung moeglich, 
// dann keine Dimensionierung noetig
vector<double> x = { 2.7, 8.1, 9.0, 27.4, -1.45e8, 0.886e-50 };
//
// Ausgabe 1. und letztes Element
cout << x[0] << " " << x[5] << endl;
//
// Kopieren:
auto m = n; // independent copy of n
m[0] = 99;
cout << m[0]; // -> 99
cout << n[0]; // -> 0


tuple

Ein etwas anderes Problem ist, dass man einige Werte –auch unterschiedlichen Typs– gemeinsam speichern und ansprechen möchte.

Tuple ist Container um Objekte verschiedenen Typs und beliebiger Anzahl zu gruppieren.

tuple<int,float,string> t(1,2.f,"text");
int x = get<0>(t);
float y = get<1>(t);
string z = get<2>(t);

Etwas sperrige Syntax in der Benutzung...