La Standard Library (SL)
Standard Library est l'expression anglaise pour bibliothèque standard. Cette expression désigne un ensemble de spécifications à propos d'un ensemble de classes, fonctions et autres objets du C++ qui doivent être implémentées. Différents compilateurs proposent ainsi différentes implémentations de ces spécifications. Il n'existe donc pas une implémentation de la bibliothèque standard.
Parmi ces spécifications, on trouve notamment la description des classes de flux (streams : std::iostream, std::fstream, ...), des classes concernant les chaînes de caractères (string : std::string, ...), les conteneurs standards (containers : std::vector, std::list, std::map, std::set, ...), les algorithmes (algorithms : std::sort, std::fill, ...) et bien d'autres. A noter que la Standard Library du C++ contient la bibliothèque standard du C (celle de la norme C90).
Généralement, tout ce qui provient de la bibliothèque standard est placé dans l'espace de nom std. Par exemple, si l'on veut utiliser les chaînes de caractères de la bibliothèque standard, string, il faut préfixer ce nom par std, ce qui donne std::string. Toutefois, la possibilité offerte en C++ d'utiliser un espace de nom dans un code s'applique également à l'espace de nom standard.
La Standard Template Library (STL)
La STL est un sous-ensemble de la SL qui contient tout ce qui concerne les conteneurs, les itérateurs, les algorithmes, les foncteurs, ...
A l'origine, c'était une "bibliothèque" développée par Silicon Graphics (SGI) qui a ensuite été reprise dans la plupart, si ce n'est toutes, des implémentations de la bibliothèque standard. Vous trouverez d'ailleurs des différences entre la version de SGI, dont la documentation est disponible sur leur site, et les autres versions.
Contrairement à ce que le nom indique, la STL n'est pas tout ce qui utilise les templates.
L'évolution de la SL
La SL va évoluer, tout comme le C++. La prochaine version du C++, dont le nom est actuellement C++0x, définit de nouveaux modules pour sa SL. Nous y retrouverons normalement un nombre assez important de modules de la bibliothèque Boost. Si vous voulez en savoir plus, je vous invite à consulter le site du commité de normalisation du C++.
En attendant, grâce aux tutoriels de nos rédacteurs ainsi que grâce aux nombreux contributeurs de notre forum C++, vous pourrez déjà vous initier correctement à la bibliothèque standard.
Partager