Zum Inhalt springen

C++-Standardbibliothek

aus Wikipedia, der freien Enzyklopädie
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 14. Juni 2005 um 17:12 Uhr durch 132.199.18.195 (Diskussion). Sie kann sich erheblich von der aktuellen Version unterscheiden.

Die C++ Standard Template Library, kurz STL geht auf sehr alte Wurzeln zurück. Schon 1971 gab es erste Entwürfe generischer Bibliotheken von Dave Musser. 1979 begann Alexander Stepanov mit der Entwicklung seiner Ideen auf diesem Gebiet. Die Umsetzung in einer großen Programmiersprache erfolgte jedoch erst 1987 mit Ada. Meng Lee, Stepanov und Musser stellten die Idee der STL 1993/94 dem Ansi/ISO-Kommittee für die Standardisierung von C++ vor, die das Projekt praktisch sofort in den C++-Standard übernahmen.

Die STL integriert vorbildlich die Konzepte der objektorientierten und generischen Programmierung und stellt eine gute Grundlage für C++-Programme zur Verfügung. Nicht alles ist ausgeführt wie etwa die Verarbeitung case-insensitiver Strings. Aber das Wünschenswerte kann leicht vom Programmierer erzeugt werden, wenn, ja wenn er mit der STL vertraut ist und z.B. mit den traits-Klassen umgehen kann. Das "leicht" im vorherigen Satz heißt also nicht etwa "einfach" und schon gar nicht "ohne Vorkenntnisse".


Grobe Inhaltsübersicht:

A Container

A1 Sequence Container

vector<T>, deque<T>, list<T> O(n) access random access varying length insertions deletions ins at end del at end ins at begin del at begin vector<T> ja ja ja ja deque<T> ja ja ja ja ja ja list<T> leider ja ja ja T a [n] ja ja ja string ja ja ja ja

Die Spalten insertions und deletions sind genau dann mit ja markiert, wenn die Operationen mit einer Rechenzeit garantiert sind, die von der Containerlänge unabhängig ist. Andere Operationen können trotzdem verwendet werden, sind jedoch im "falschen" Container nicht mehr optimal.

A2 Sorted Associative Container

set<Key>, multiset<Key>, map<Key, T>, multimap<Key, T>

map<string,long> Telefon; string name; Telefon["Frank"] = 314592; ... cin >> name; if (Telefon.find(name) != Telefon.end()) cout << Telefon [name];

B Generic Algorithms

Stöberübersicht:

find, adjacent_find, count, for_each, mismatch, equal, search, copy, copy_backward, fill, fill_n, generate, partition, random_shuffle, remove, replace, reverse, rotate, swap, swap-ranges, transform, unique, sort, partial_sort, stable_sort, nth_element, binary_search, lower_bound, upper_bound, equal_range, merge, includes, set_union, set_intersection, set_difference, set_symmetric_difference, make_heap, pop_heap, push_heap, sort_heap, min_element, max_element, lexicographical_compare, next_permutation, accumulate, partial_sum, adjacent_difference, inner_product

C Iterators

input, output, forward, bidirectional, random access, insert, stream, constant

D Function Objects

E Adaptors

F Allocators

Weitere Informationen unter dem englischen Begriff Standard Template Library