« Programmation C++/La librairie standard » : différence entre les versions

Contenu supprimé Contenu ajouté
Gzen92 (discussion | contributions)
Aucun résumé des modifications
m →‎La STL : Orth.
Ligne 5 :
La STL (Standard Template Library) a été mise au point par [[w:Alexander Stepanov|Alexander Stepanov]] et [[w:Meng Lee|Meng Lee]]. La STL a été proposée au comité ISO de standardisation du C++ qui l'a acceptée en juillet 1994. Les résultats des travaux de recherche ont été publiés officiellement dans un rapport technique en novembre 1995. Ces travaux de recherche ont été une avancée majeure pour le C++, qui était aussi à l'époque le seul langage capable d'offrir les mécanismes de programmation générique nécessaires à la mise au point de cette bibliothèque. Elle a d'ailleurs influencé les autres parties de la future bibliothèque du C++ (notamment la future classe string) et aussi l'évolution du langage.
 
La STL est axée autour de trois grands thèmes :
 
* Les '''conteneurs''' : ce sont les structures de données classiques de l'algorithmique, à savoir les tableaux à accès direct, les listes chaînées, les piles, les files, les ensembles, les dictionnaires. Dans sa version initiale, elle ne contient pas les tables de hachage, qui ne seront d'ailleurs pas présents dans ISO C++98.
* Les '''algorithmes''' : ce sont les algorithmes classiques de l'algorithmique, essentiellement les algorithmes de tri et de recherche
* Les '''itérateurs''' : c'est une généralisation du concept de pointeur. D'ailleurs un pointeur est un itérateur particulier. Les itérateurs ont l'avantage de pouvoir parcourir un conteneur sans que ce parcours ne fasse partie de l'état interne du conteneur.
 
La force de la STL réside dans le fait de pouvoir offrir des conteneurs pouvant accueillir n'importe quel type moyennant quelques contraintes sémantiques qui peuvent varier selon le type conteneur et surtout dans le fait que les algorithmes sont complètement découplés des conteneurs (même si certains conteneurs offrent parfois leur propre algorithme pour des besoins d'optimisation et de performances. Par exemple, le conteneur ''list'' a une méthode ''sort'').