C++ Standardbibliothek

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).

Erzeugen und Füllen eines Vektors

Nachdem wir ganz oben in stl.cpp die Vektorbibliothek durch #include <vector> eingebunden haben, könen wir einen Vektor mit einem beliebigen Typen in eckigen Klammern erzeugen und füllen.

void stlArray()
{
    // Vektor erzeugen
    vector<int> a;

    // Elemente hinten anhängen
    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.

    // Elemente ausgeben
    unsigned int i;
    for (i = 0; i < a.size(); i++)
    {
        cout << a[i] << endl;
    }

    // Alternative
    vector<int>::iterator it;
    for (it = a.begin(); it != a.end(); it++)
    {
        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:

    // Elemente löschen
    it = a.begin();
    while (it != a.end())
    {
        it = a.erase(it);
    }

} // stlArray()

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.

Selbständige Programmierung
  • Lest euch die Wikipedia-Artikel durch und merkt euch die verschiedenen Container. Es ist manchmal gut, im Hinterkopf zu behalten, was es dort gibt.

zurück