La Standard Template Library (STL) est une bibliothèque C++, normalisée par l'ISO (document ISO/CEI 14882) et mise en œuvre à l'aide des templates.
Cette bibliothèque fournit :
un ensemble de classes conteneurs, telles que les vecteurs (vector), les tableaux associatifs (map), les listes chaînées (list), qui peuvent être utilisées pour contenir n'importe quel type de données à condition qu'il supporte certaines opérations comme la copie et l'assignation.
une abstraction des pointeurs : les itérateurs. Ceux-ci fournissent un moyen simple et élégant de parcourir des séquences d'objets et permettent la description d'algorithmes indépendamment de toute structure de données.
des algorithmes génériques tels que des algorithmes d'insertion/suppression, recherche et tri.
une classe string permettant de gérer efficacement et de manière sûre les chaînes de caractères.
L'architecture de la bibliothèque STL a été créée en grande partie par une seule personne, Alexander Stepanov. En 1979, il commença à mettre en forme ses premières idées de programmation générique, une technique révolutionnaire dans le domaine du développement logiciel. Bien que Dave Musser ait formulé certains aspects de la programmation générique dès 1971, ceux-ci restaient limités, à l'époque, au champ très spécialisé de l'algèbre informatique.
Stepanov sut reconnaître le potentiel de la programmation générique et persuada ses collègues de General Electric (dont, initialement, Dave Musser et Deepak Kapur) de creuser le concept pour en faire l'une des bases du développement de logiciel. À cette époque, aucun langage de programmation ne proposait de réel support pour cette nouvelle méthode de programmation générique.
Ada fut le premier langage important à fournir ce support, avec son unité générique. Stepanov et Musser développèrent et publièrent une bibliothèque Ada, disponible dès 1987, dédiée aux calculs utilisant des listes. Celle-ci incluait une grande partie de leur recherche sur la programmation générique.