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++ Standardbibliothek
  • Generische Programmierung
  • Der Aspekt-orientierte Ansatz
  • Funktionale Programmierung
  • Die Templateprogrammierung in C++
  • Überblick über die STL
  • Container
  • Adapter
  • Iteratoren
  • Algorithmen
  • Listen
  • Vektoren
  • Queues und Dequeues
  • Stacks
  • Sets und Multisets
  • Maps und Multimaps
  • Das Laufzeitverhalten der Container
  • Das Allokationsverhalten der Container
  • Footprint
  • Compilerunterstü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 Methodenzeiger
  • Parameterbindung
  • Funktionsobjekte
  • Generische Funktoren
  • Designprinzipien in der STL
  • Containerdesign
  • Eigene Iteratoren
  • Design von Algorithmen
  • Die Verwendung von typename
  • Die Bedeutung von typedef
  • Die Aspekttrennung im Containerdesign
  • Allokatoren
  • Die Aspekttrennung im Design von Algorithmen
  • Codebloat und Codeoptimierung 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 10.07.2021