Die C++-Standardbibliothek: Vollständiger Überblick
Die C++-Standardbibliothek (C++ Standard Library) ist eine leistungsstarke Sammlung von Klassen, Funktionen, Makros und Templates, die mit jedem C++-Compiler ausgeliefert wird. Sie bietet fertige Lösungen für die meisten typischen Aufgaben: von der Arbeit mit Datencontainern bis hin zu Netzwerkkommunikation und Multithreading. In diesem Artikel werden wir die Hauptkomponenten der Bibliothek analysieren, Codebeispiele zeigen und erklären, wie man ihre Möglichkeiten effektiv nutzt.
Hauptkomponenten der Standardbibliothek
Die Standardbibliothek ist in mehrere große Abschnitte unterteilt:
- STL (Standard Template Library) — Container, Iteratoren, Algorithmen und Funktionsobjekte.
- Ein-/Ausgabe — Streams (
iostream), Dateistreams (fstream), String-Streams (sstream). - Strings — Die Klassen
std::stringundstd::string_view. - Numerische Operationen — Mathematische Funktionen (
cmath), Zufallszahlen (random), komplexe Zahlen (complex). - Multithreading — Threads (
thread), Mutexe, Bedingungsvariablen. - Hilfsprogramme —
std::optional,std::variant,std::any, Smart Pointer (shared_ptr,unique_ptr).
STL-Container
Container sind Template-Klassen, die zum Speichern von Objektsammlungen dienen. Sie werden in sequenzielle und assoziative Container unterteilt.
Sequentielle Container
std::vector— dynamisches Array. Schneller Zugriff über Index, langsames Einfügen in die Mitte.std::deque— Doppelschlange. Schnelles Einfügen/Löschen an beiden Enden.std::list— doppelt verkettete Liste. Schnelles Einfügen/Löschen an beliebiger Stelle, aber langsamer Zugriff über Index.
#include <iostream>#include <vector>
int main() { std::vector<int> numbers = {10, 20, 30, 40}; numbers.push_back(50); // Hinzufügen am Ende for (int n : numbers) { std::cout << n << " "; } return 0;}Assoziative Container
std::set— Menge eindeutiger Elemente (sortiert).std::map— Wörterbuch „Schlüssel-Wert“ (nach Schlüssel sortiert).std::unordered_set/std::unordered_map— Hash-Tabellen (nicht sortiert, aber schneller).
#include <iostream>#include <map>
int main() { std::map<std::string, int> ages; ages["Alice"] = 30; ages["Bob"] = 25; for (const auto& [name, age] : ages) { std::cout << name << ": " << age << std::endl; } return 0;}Algorithmen
Die Bibliothek <algorithm> enthält über 100 Algorithmen für die Arbeit mit Sequenzen: Sortieren, Suchen, Kopieren, Transformieren usw. Alle Algorithmen arbeiten über Iteratoren, was sie universell einsetzbar macht.
#include <iostream>#include <algorithm>#include <vector>
int main() { std::vector<int> v = {5, 2, 8, 1, 9}; std::sort(v.begin(), v.end()); // Sortieren aufsteigend auto it = std::find(v.begin(), v.end(), 8); if (it != v.end()) { std::cout << "Gefunden: " << *it << std::endl; } return 0;}Arbeit mit Strings
Die Klasse std::string bietet praktische Methoden für die Textarbeit: Suchen, Ersetzen, Verketten, Vergleichen. In C++17 wurde std::string_view für nicht-besitzende String-Ansichten hinzugefügt.
#include Auch in der Bibliothek
Arbeit mit Daten in C# (.NET): Überblick über Bibliotheken und integrierte Mittel
Serde für Rust: Vollständige Anleitung mit Beispielen
Arbeiten mit Bildern in C++: Die Bibliotheken CImg und STB Image