Standard Template Library

Als Standard Template Library (STL) werden verschiedene in der Programmiersprache C++ geschriebene Bibliotheken bezeichnet.

Ursprünglich wurde mit Standard Template Library eine in den 1980er Jahren bei Hewlett-Packard (kurz: HP) entwickelte, in C++ verfasste Bibliothek bezeichnet, die weitgehend auf generischer Programmierung mit dem Schwerpunkt Datenstrukturen und Algorithmen basierte. Diese Bibliothek beeinflusste maßgeblich die sogenannte C++-Standardbibliothek, die heute fester Bestandteil der Programmiersprache C++ ist.

Entstehung

Die bei HP entwickelte STL geht auf sehr alte Wurzeln zurück. Schon 1971 gab es erste Entwürfe generischer Bibliotheken von Dave Musser. 1979 begann Alexander Stepanow mit der Entwicklung seiner Ideen auf diesem Gebiet. Die Umsetzung in einer großen Programmiersprache erfolgte jedoch erst 1987 mit der Programmiersprache Ada.

Stepanow und Meng Lee, damals Mitarbeiter bei Hewlett-Packard, nannten die von ihnen entwickelte Programmbibliothek STL. Später wurde diese Bibliothek gemeinfrei. Danach, im Jahr 1993, also zu einer Zeit als sich C++ noch in einem frühen Entwicklungsstadium befand, stellten sie die Bibliothek dem C++-Standardisierungskomitee vor, das daraus im Laufe der Zeit einen konkreten Vorschlag zur Aufnahme in die Programmiersprache C++ ausarbeitete, was schließlich zur Integration führte.

Stepanow wechselte später zu Silicon Graphics (kurz: SGI) und setzte auch danach die Arbeiten an seiner Bibliothek fort.

Bezug zur C++-Standardbibliothek

Von der heutigen C++-Standardbibliothek stammt zwar ein Großteil aus der STL in ihrer bei HP entwickelten Fassung auf dem Stand von 1993, in verschiedenen Details unterscheidet sie sich aber davon. Aus diesem Grund ist es nicht möglich, eine Teilmenge der C++-Standardbibliothek als STL zu benennen. Auch enthielt die STL in der damaligen Fassung weder Zeichenketten (Strings) noch Ein-/Ausgabedatenströme (Streams). In der C++-Norm kommt der Begriff STL nicht vor.

Verschiedene Bibliotheken namens STL

Inoffiziell hat die Bezeichnung STL weite Verbreitung. Die unterschiedlichen Vorstellungen über die Bedeutung dieses Begriffs führen aber bisweilen zu Missverständnissen. Bei SGI ist mit „STL“ beispielsweise die dort veröffentlichte Bibliothek gemeint, die sich wiederum stark von der bei HP entwickelten Fassung unterscheidet.

Es gibt keine durch nationale oder internationale Normen definierte Bibliothek namens STL. Die Ideen der STL wurden erstmals 1998 in den damaligen C++98-Standard in die C++ Standard Library aufgenommen und werden seitdem stetig (C++03, C++11, C++14, C++17, C++20, C++23, C++26) weiterentwickelt.

Die folgenden von der C++-Standardbibliothek unabhängigen Bibliotheken nennen sich STL oder tragen den Bestandteil STL im Namen:

  • die ursprüngliche, bei HP entwickelte Bibliothek STL (Entwicklung eingestellt)
  • die bei Silicon Graphics gepflegte STL; gegenüber der HP-STL stark erweitert; enthält mehr oder weniger die C++-Standardbibliothek mit Ausnahme der von C übernommenen Bibliotheken; darüber hinaus Erweiterungen wie Hash-Maps, die nicht in den Standard übernommen wurden, sowie rope, ein Datentyp zur effizienteren Verarbeitung sehr langer Zeichenketten (Entwicklung eingestellt)
  • die freie Bibliothek STLport; war eine Zeitlang eine Art Alternative zur C++-Standardbibliothek
  • eine .Net-Framework-Bibliothek namens STL/CLI; wurde entwickelt zur Ausnutzung von mit C++/CLI eingeführten Spracherweiterungen; lässt sich mit Standard-C++-Compilern nicht übersetzen

Content Disclaimer

Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.

  1. The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
  2. There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
  3. It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
  4. Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
  5. Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.