C++ Standardbibliothek: vollständiger Überblick
Die C++ Standardbibliothek (oft als STL — Standard Template Library bezeichnet) ist eine leistungsstarke Sammlung von Template-Klassen und -Funktionen, die in jedem C++-Compiler enthalten ist. Sie bietet fertige, getestete und optimierte Lösungen für die häufigsten Programmieraufgaben: von der Arbeit mit dynamischen Arrays und Zeichenketten bis hin zu komplexen Sortier- und Suchalgorithmen. Die Verwendung der Standardbibliothek beschleunigt die Entwicklung erheblich, erhöht die Zuverlässigkeit des Codes und erleichtert dessen Wartung.
In diesem Artikel werden wir die Hauptkomponenten der C++ Standardbibliothek im Detail besprechen: Container, Algorithmen, Iteratoren, Zeichenketten, Ein-/Ausgabestreams und intelligente Zeiger. Jeder Abschnitt wird von praktischen Codebeispielen begleitet.
Container (Containers)
Container sind Klassen, die zum Speichern und Organisieren von Datensätzen dienen. Sie werden in drei Hauptkategorien unterteilt:
- Sequenzielle Container: speichern Elemente in linearer Reihenfolge. Hauptvertreter:
std::vector(dynamisches Array),std::list(doppelt verkettete Liste),std::deque(Doppelschlange). - Assoziative Container: speichern Elemente in sortierter Form und ermöglichen schnelles Suchen. Beispiele:
std::set(Menge),std::map(Wörterbuch "Schlüssel-Wert"). - Ungeordnete assoziative Container (C++11): verwenden Hash-Tabellen für noch schnelleren Zugriff. Beispiele:
std::unordered_set,std::unordered_map.
Beispiel für die Arbeit mit std::vector und std::map:
#include <iostream>#include <vector>#include <map>#include <string>
int main() { // Sequenzieller Container std::vector<int> numbers = {10, 20, 30, 40}; numbers.push_back(50); // Hinzufügen am Ende
std::cout << "Vektor: "; for (int n : numbers) { std::cout << n << " "; } std::cout << std::endl;
// Assoziativer Container std::map<std::string, int> ages; ages["Alice"] = 30; ages["Bob"] = 25;
std::cout << "Alter von Alice: " << ages["Alice"] << std::endl; return 0;}Iteratoren (Iterators)
Iteratoren sind eine verallgemeinerte Methode für den Zugriff auf Elemente eines Containers. Sie funktionieren wie "intelligente Zeiger" und ermöglichen ein einheitliches Durchlaufen beliebiger Container. Die wichtigsten Iteratortypen sind: begin() (Zeiger auf das erste Element) und end() (Zeiger auf das Element nach dem letzten).
Beispiel für die Verwendung eines Iterators zum Durchlaufen einer std::list:
#include <iostream>#include <list>
int main() { std::list<double> prices = {19.99, 29.99, 9.99};
// Verwendung eines Iterators for (auto it = prices.begin(); it != prices.end(); ++it) { std::cout << *it << " "; } std::cout << std::endl; return 0;}Algorithmen (Algorithms)
Die Bibliothek <algorithm> enthält Dutzende vorgefertigter Funktionen für die Arbeit mit Datenfolgen: Sortieren, Suchen, Kopieren, Transformieren und vieles mehr. Algorithmen arbeiten mit Iteratoren, was sie universell einsetzbar macht.
Beliebte Algorithmen:
std::sort— Sortieren eines Bereichs.std::find— Suchen des ersten Vorkommens eines Wertes.std::copy— Kopieren von Elementen.std::accumulate— Summieren von Elementen (aus<numeric>).
Beispiel für Sortieren und Suchen:
#include <iostream>#include <vector>#include <algorithm>
int main() { std::vector<int> data = {5, 2, 8, 1, 9 Auch in der Bibliothek
GraphQL für C# (.NET): Vollständiger Leitfaden zur Bibliothek GraphQL.NET
Autorisierung und Authentifizierung in PHP: Vollständiger Leitfaden mit Beispielen
Testen in JavaScript (Node.js): Frameworks und Werkzeuge
Markdown-Verarbeitung in Swift für iOS und macOS: Bibliotheken und Beispiele