Die Entwickler von C++ waren sich durchaus bewusst, dass Speicherverwaltung in C++ problematisch ist und häufig verwendete Datenstrukturen immer wieder programmiert werden müssten.
Daher führten sie eine Standardbibliothek ein, die zum größten Teil von Hewlett-Packards STL (standard template library) abgeleitet ist. In dieser Bibliothek, die ein Bestandteil des C++ Standards ist, gibt es viele Typen: Vektoren, Arrays, Listen usw. Die Standardbibliothek zur Zeichen Ein- und Ausgabe haben wir bereits verwendet. Eine Erweiterung der Standardbibliothek um weitere Funktionalität ist Boost.
Wir möchten uns hier Vektoren widmen, die Felder dynamischer Länge bezeichnen (nicht zu verwechseln mit 3D-Vektoren).
Nachdem wir ganz oben in stl.cpp die Vektorbibliothek
durch
{
vector<
a.push_back(1);
a.push_back(2);
a.push_back(3);
a.push_back(4);
In unserem Fall erzeugen wir einen Vektor aus Ganzzahlen und fügen vier Elemente hinten an. Um auf die Objekte zuzugreifen, gibt es danach mehrere Methoden, von denen wir zwei verwenden: Eckige Klammern und einen intelligenten Zeiger, den sogenannten Iterator.
{
cout << a[i] << endl;
}
vector<
{
cout << *it << endl;
}
Wir können beliebige Elemente des Vektors löschen oder an beliebiger Stelle Werte einfügen. Für beide Operationen benötigen wir einen Iterator, der angibt, an welcher Stelle eingefügt bzw. gelöscht werden soll. Das folgende Fragment löscht den Vektor vollständig:
it = a.begin();
{
it = a.erase(it);
}
}
Für alle weiteren Standardklassen und genaueren Informationen möchte ich auf die Online-Hilfe und das Internet verweisen, da eine vollständige Abhandlung diesen Kurs sprengen würde.
- Lest euch die Wikipedia-Artikel durch und merkt euch die verschiedenen Container. Es ist manchmal gut, im Hinterkopf zu behalten, was es dort gibt.