Die C++-Standardbibliothek: Ein vollständiger Überblick über die Funktionen

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Die C++-Standardbibliothek (STL): Ein vollständiger Überblick



Die C++-Standardbibliothek (oft als STL bezeichnet – Standard Template Library) ist eine leistungsstarke Sammlung von Template-Klassen und -Funktionen, die ein wesentlicher Bestandteil jedes C++-Compilers ist. Sie bietet dem Entwickler fertige, getestete und hocheffiziente Lösungen für die meisten alltäglichen Aufgaben: von der Arbeit mit Datensammlungen bis hin zu komplexen Algorithmen und der Ein-/Ausgabe. Das Erlernen der STL ist ein entscheidender Schritt zur Beherrschung des modernen C++.



In diesem Artikel werden wir die Hauptkomponenten der Standardbibliothek, ihre Zwecke und praktische Anwendungsbeispiele im Detail besprechen.



1. Container (Containers)



Container sind Datenstrukturen, die zum Speichern von Sammlungen von Objekten dienen. Alle Container sind Template-Klassen, was das Speichern von Elementen beliebigen Typs ermöglicht.



  • Sequenzielle Container: Speichern Elemente in linearer Reihenfolge.
    • std::vector – ein dynamisches Array. Schneller Zugriff über Index, Einfügen/Löschen am Ende – O(1), in der Mitte – O(n).
    • std::list – eine doppelt verkettete Liste. Schnelles Einfügen/Löschen an beliebiger Stelle, aber kein direkter Zugriff über Index.
    • std::deque – eine doppelendige Warteschlange. Schnelles Einfügen/Löschen sowohl am Anfang als auch am Ende.
    • std::array – ein statisches Array fester Größe (C++11).
  • Assoziative Container: Speichern Elemente in sortierter Reihenfolge (normalerweise basierend auf Rot-Schwarz-Bäumen).
    • std::set – eine Menge eindeutiger Elemente.
    • std::map – ein Wörterbuch (assoziatives Array) von Schlüssel-Wert-Paaren.
    • std::multiset / std::multimap – Entsprechungen, die Duplikate zulassen.
  • Ungeordnete assoziative Container (C++11): Verwenden Hash-Tabellen.
    • std::unordered_set, std::unordered_map – schneller Zugriff im Durchschnitt O(1).
  • Container-Adapter: Bieten eine eingeschränkte Schnittstelle basierend auf einem anderen Container.
    • std::stack (LIFO), std::queue (FIFO), std::priority_queue (mit Priorität).


Beispiel für die Verwendung von std::vector:

#include <iostream>#include <vector>

int main() { std::vector<int> numbers = {10, 20, 30, 40, 50}; numbers.push_back(60); // Element am Ende hinzufügen for (int n : numbers) { std::cout << n << " "; } // Ausgabe: 10 20 30 40 50 60 return 0;}


2. Iteratoren (Iterators)



Iteratoren sind verallgemeinerte Zeiger, die es ermöglichen, die Elemente jedes Containers auf einheitliche Weise zu durchlaufen. Sie sind das Bindeglied zwischen Containern und Algorithmen.



  • Kategorien von Iteratoren: Input, Output, Forward, Bidirectional, Random Access.
  • begin() / end() – geben Iteratoren auf das erste bzw. das Element nach dem letzten zurück.
  • std::advance() – bewegt den Iterator um N Positionen.
  • std::distance() – berechnet den Abstand zwischen zwei Iteratoren.


Beispiel mit Iteratoren:

#include <iostream>#include <vector>

int main() { std::vector<std::string> words = {"Hello", "World", "C++"}; for (auto it = words.begin(); it != words.end(); ++it) { std::cout << *it << " "; } // Ausgabe: Hello World C++ return 0;}


3. Algorithmen (

Empfehlungen