Sources annotées STL
466 pages
French
PDF
4.5

Sources annotées STL

Sources annotées STL

Auteur :

Année :

Résumé :

Introduction

Le livre « The Annotated STL Sources » de Hou Jie, paru en 2001, reste une ressource unique pour ceux qui veulent comprendre le fonctionnement interne de la bibliothèque standard de templates C++. Contrairement à la plupart des manuels qui expliquent comment utiliser la STL, ce livre montre comment elle est implémentée au niveau du code source, en accompagnant chaque fragment de commentaires et d'explications détaillés. Avec 466 pages de texte technique dense, il s'adresse à un lecteur déjà familier avec les bases du C++.

De quoi parle le livre

Hou Jie prend pour base l'implémentation de la STL par SGI (Silicon Graphics) – l'une des plus populaires et des mieux documentées. Le livre est conçu comme un guide des sources : l'auteur analyse successivement tous les composants principaux de la bibliothèque :

  • Conteneurs : vector, list, deque, set, map, versions unordered (pas encore normalisées à l'époque, mais déjà présentes dans la SGI STL), ainsi que des conteneurs spéciaux comme slist et rope.
  • Allocateurs : l'allocateur standard, l'allocateur spécial SGI avec pool mémoire, les mécanismes de personnalisation de l'allocation des ressources.
  • Itérateurs : catégories d'itérateurs, classes traits, adaptateurs (back_insert_iterator, front_insert_iterator, istream_iterator, etc.).
  • Algorithmes : des plus simples (find, count) aux plus complexes (sort, partial_sort, nth_element, opérations sur les ensembles).
  • Objets fonctionnels et adaptateurs : binder, negator, pointer_to_unary_function, etc.
  • Mécanismes auxiliaires : type traits, __type_traits, char_traits.

Chaque chapitre contient des fragments de code réel avec des annotations (souvent en chinois, mais en anglais dans les éditions internationales), expliquant pourquoi le code est écrit de cette manière, quelles optimisations sont appliquées et quels pièges sont cachés.

Pour qui ce livre

Le livre s'adresse aux programmeurs C++ de niveau intermédiaire et avancé qui écrivent déjà du code avec la STL, mais souhaitent comprendre son fonctionnement interne. Il sera utile :

  • Aux développeurs cherchant à écrire un code plus efficace et plus sûr, en comprenant le fonctionnement « sous le capot » des conteneurs et des algorithmes.
  • Aux étudiants et enseignants de cours C++ et de structures de données souhaitant étudier des implémentations de référence.
  • Aux ingénieurs en optimisation des performances – le livre dévoile de nombreuses astuces utilisées dans la SGI STL pour accélérer le travail.
  • À tous ceux qui s'intéressent à l'histoire du C++ et à l'évolution de la bibliothèque standard.

Ce que le lecteur apprendra

Après la lecture, le lecteur pourra :

  • Expliquer pourquoi std::vector peut être plus rapide que std::list dans certains scénarios et plus lent dans d'autres, en se basant sur l'implémentation.
  • Comprendre le fonctionnement des allocateurs et pourquoi la SGI STL utilise un pool mémoire séparé pour les petits objets.
  • Maîtriser les traits d'itérateurs et les mécanismes de progression (advance) – pourquoi std::advance pour random_access_iterator fonctionne en O(1), mais en O(N) pour forward_iterator.
  • Lire et analyser de manière autonome le code source de toute implémentation moderne de la STL (libstdc++, libc++).
  • Utiliser des techniques de métaprogrammation, comme la spécialisation partielle de templates et les type traits, dans ses propres projets.
  • Écrire ses propres conteneurs et algorithmes, compatibles avec la STL en termes d'interface et de performances.

Points forts

1. Format unique. Le livre ne se contente pas de réimprimer les sources – chaque bloc de code est accompagné de commentaires qui expliquent le rôle des variables, les raisons du choix d'une construction particulière, ainsi que des références à la norme. Cela transforme la lecture en un dialogue avec un mentor expérimenté.

2. Profondeur d'analyse. L'auteur n'évite pas les sujets complexes : il analyse le mécanisme du « small object allocator », explique pourquoi dans l'implémentation de std::sort on utilise

Recommendations