Annotierte STL-Quellcodes
466 Seiten
German
PDF
4.5

Annotierte STL-Quellcodes

Annotierte STL-Quellcodes

Autor:

Jahr:

Zusammenfassung:

Einleitung

Das Buch „The Annotated STL Sources“ von Hou Jie erschien im Jahr 2001 und ist bis heute eine einzigartige Ressource für alle, die verstehen möchten, wie die C++-Standardbibliothek von innen aufgebaut ist. Im Gegensatz zu den meisten Lehrbüchern, die erklären, wie man die STL verwendet, zeigt dieses Buch, wie sie auf Quellcode-Ebene implementiert ist, und begleitet jedes Fragment mit detaillierten Kommentaren und Erläuterungen. Der Umfang beträgt 466 Seiten dichten technischen Textes, der sich an Leser richtet, die bereits mit den Grundlagen von C++ vertraut sind.

Worum es in dem Buch geht

Hou Jie verwendet die STL-Implementierung von SGI (Silicon Graphics) als Grundlage – eine der bekanntesten und am besten dokumentierten. Das Buch ist als Leitfaden durch die Quelltexte aufgebaut: Der Autor analysiert nacheinander alle wesentlichen Komponenten der Bibliothek:

  • Container: vector, list, deque, set, map, unordered-Versionen (damals noch nicht im Standard, aber bereits in der SGI STL vorhanden) sowie spezielle Container wie slist und rope.
  • Allokatoren: Standard-Allokator, spezieller SGI-Allokator mit Speicherpool, Mechanismen zur Anpassung der Ressourcenzuweisung.
  • Iteratoren: Iteratorkategorien, Traits-Klassen, Adapter (back_insert_iterator, front_insert_iterator, istream_iterator usw.).
  • Algorithmen: von einfachen (find, count) bis zu komplexen (sort, partial_sort, nth_element, Set-Operationen).
  • Funktionsobjekte und Adapter: binder, negator, pointer_to_unary_function usw.
  • Hilfsmechanismen: type traits, __type_traits, char_traits.

Jedes Kapitel enthält Ausschnitte aus dem echten Code mit Anmerkungen (oft auf Chinesisch, in internationalen Ausgaben auf Englisch), die erklären, warum der Code genau so geschrieben ist, welche Optimierungen angewendet wurden und welche Fallstricke verborgen sind.

Für wen ist dieses Buch geeignet

Das Buch richtet sich an fortgeschrittene C++-Programmierer, die bereits sicher Code mit der STL schreiben, aber deren interne Funktionsweise verstehen möchten. Es ist nützlich für:

  • Entwickler, die effizienteren und sichereren Code schreiben möchten, indem sie verstehen, wie Container und Algorithmen „unter der Haube“ funktionieren.
  • Studenten und Dozenten von C++-Kursen und Kursen zu Datenstrukturen, die Referenzimplementierungen studieren möchten.
  • Ingenieure, die sich mit Leistungsoptimierung befassen – das Buch enthüllt viele Tricks, die in der SGI STL zur Beschleunigung verwendet werden.
  • Alle, die sich für die Geschichte von C++ und die Entwicklung der Standardbibliothek interessieren.

Was der Leser lernen wird

Nach der Lektüre wird der Leser in der Lage sein:

  • Zu erklären, warum std::vector in manchen Szenarien schneller als std::list sein kann und in anderen langsamer, basierend auf der Implementierung.
  • Zu verstehen, wie Allokatoren funktionieren und warum die SGI STL einen separaten Speicherpool für kleine Objekte verwendet.
  • Sich in Iterator-Traits und den Mechanismen von advance auszukennen – warum std::advance für random_access_iterator in O(1) arbeitet, für forward_iterator jedoch in O(N).
  • Selbstständig den Quellcode jeder modernen STL-Implementierung (libstdc++, libc++) zu lesen und zu analysieren.
  • Metaprogrammierungstechniken wie partielle Templatespezialisierung und type traits in eigenen Projekten einzusetzen.
  • Eigene Container und Algorithmen zu schreiben, die in Bezug auf Schnittstelle und Leistung mit der STL kompatibel sind.

Stärken

1. Einzigartiges Format. Das Buch druckt nicht einfach die Quelltexte ab – jeder Codeblock wird von Kommentaren begleitet, die den Zweck der Variablen, die Gründe für die Wahl einer bestimmten Konstruktion sowie Verweise auf den Standard erklären. Dies verwandelt das Lesen in einen Dialog mit einem erfahrenen Mentor.

2. Tiefe der Bearbeitung. Der Autor umgeht keine komplexen Themen: Er analysiert den Mechanismus des „Small Object Allocator“, erklärt, warum in der Implementierung von std::sort

Empfehlungen