Einführungsseminar in die C++ Standard Template Library - STL

Dieser Kurs wendet sich an diejenigen, die den Umgang mit der Standard Template Library - STL - lernen möchten. Dabei ist ein gutes Grundverständnis der Programmiersprache C++ Voraussetzung. Die STL ist eine flexible und mächtige Bibliothek allgemeiner Containerimplementierungen, containerspezifischer Operationen und Algorithmen. Sogar Elemente funktionaler Programmierung sind in ihr enthalten. Dabei besitzt die STL eine erweiterbare Struktur die es erlaubt die in ihr enthaltenen Schichten zu erweitern oder Fremdcode zu adaptieren. Die Aspekttrennung ihrer Implementierung hat weit über die STL hinaus Anwendung gefunden und ist heute eines der Basisprinzipien moderner Bibliotheks- und Frameworkimplementierungen. Insofern ist dieses Seminar nicht nur für Teilnehmer interessant, die die STL direkt einsetzen wollen. Es ist auch für jene sinnvoll, die diese Prinzipien verstehen und in eigenen Bibliotheken zum Einsatz bringen wollen.

In diesem Kurs wird die STL mit praktischen Beispielen vorgestellt. Neben der Praxis wird die Theorie vorgestellt, die von der traditionellen objektorientierten Programmierung abweicht. Neben der Schichtstruktur der STL stehen dabei die eingesetzten Designprinzipien der generischen Programmierung im Vordergrund. Diese Prinzipien sind sowohl für die Anwendung der bestehenden Elemente der STL wichtig, wie auch für den Entwurf eigener Bibliothekselemente die mit dieser Bibliothek zusammenarbeiten sollen. Natürlich wird auch grundsätzlich auf die Templateprogrammierung in ANSI/ISO C++ eingegangen, da diese eine unverzichtbare Voraussetzung für den Einsatz der STL ist. Weitere wichtige Aspekte sind das Laufzeitverhalten und der Footprint bei der Verwendung von STL Elementen. Für die Anwendung der STL in speziellen Umgebungen wie zum Beispiel in der Controller-Programmierung ist außerdem das Allokationsverhalten von zentraler Bedeutung. Auch diese Themen werden ausführlich besprochen.

Die folgenden Themen werden durchgenommen:

  • Abgrenzung: STL und C++ Standard­bibliothek
  • Generische Program­mierung
  • Der Aspekt-orientierte Ansatz
  • Funktionale Program­mierung
  • Die Template­program­mierung in C++
  • Überblick über die STL
  • Container
  • Adapter
  • Iteratoren
  • Algorithmen
  • Listen
  • Vektoren
  • Queues und Dequeues
  • Stacks
  • Sets und Multisets
  • Maps und Multimaps
  • Das Laufzeit­verhalten der Container
  • Das Allokations­verhalten der Container
  • Footprint
  • Compiler­unterstützung
  • Integration der STL in die Standard C++ Bibliothek
  • Die Änderungen des neuen C++11 Standards
  • Iteratordesign
  • Konstante und gegenläufige Iteratoren
  • Forward, Bidirectional und Random-Access Iteratoren
  • Stream Iteratoren
  • Algorithmen
  • Modifizierende und nicht-modifizierende Algorithmen
  • Funktions- und Methoden­zeiger
  • Parameter­bindung
  • Funktions­objekte
  • Generische Funktoren
  • Design­prinzipien in der STL
  • Container­design
  • Eigene Iteratoren
  • Design von Algorithmen
  • Die Verwendung von typename
  • Die Bedeutung von typedef
  • Die Aspekt­trennung im Container­design
  • Allokatoren
  • Die Aspekt­trennung im Design von Algorithmen
  • Codebloat und Code­optimierung durch Templates
  • Die Anwendung von Typetraits

Da in dem Kurs praktische Beispiele durchgeführt werden sollen, ist ein C++ Compiler nötig, der annähernd ANSI/ISO konform ist. Typischerweise wird ein GNU C++ Compiler, Clang oder MS Visual C++ eingesetzt. Die Entwicklungsplattform - vorzugsweise Windows, Mac OS X, Linux oder UNIX - sollte den Kursteilnehmern gut bekannt sein.

Zuletzt geändert am 12.05.2024