Bibliothèque standard du C++
La bibliothèque standard du C++ (C++ Standard Library en anglais) est une bibliothèque de classes et de fonctions standardisées selon la norme ISO pour le langage C++. Elle fournit des outils (généralement sous la forme de patrons) tels que :
- des types pour manipuler efficacement les chaînes de caractères ;
- des types pour la manipulation de flux (fichiers, entrée et sortie standard…) ;
- des conteneurs qui facilitent la manipulation de plusieurs objets de même type (avec par exemple des fonctions d'insertion ou de retrait d'éléments) ;
- une collection d'algorithmes de bas niveau comme le tri ;
La bibliothèque standard du C++ contient aussi la bibliothèque standard du C.
Cette bibliothèque est le résultat de l'évolution de plusieurs bibliothèques, parfois développées indépendamment par plusieurs fournisseurs d'environnements C++, qui ont été fusionnées et normalisées afin de garantir la portabilité des programmes qui les utilisent. Une des principales briques de cette bibliothèque est sans aucun doute la STL (abréviation de « Standard Template Library »), à tel point qu'il y a souvent confusion entre les deux. Elle aura notamment été influencée par la recherche en méthode de Généricité en programmation et par des développeurs de la STL comme Alexander Stepanov et Meng Lee[1],[2].
L'ensemble de la bibliothèque est spécifiée dans la norme ISO qui définit également le langage : ISO/CEI 14882. Elle est incluse en totalité dans l'espace de noms std
(standard). Il est donc nécessaire pour l'utiliser de préfixer de :
std::
à chaque appel d'objet, classe ou fonction de celle-ci.
En-têtes
[modifier | modifier le code]Les fichiers suivants contiennent les déclarations de la bibliothèque standard du C++.
Conteneurs
[modifier | modifier le code]- <array>
- Nouveau en C++11. Fournit une classe patron
std::array
représentant un tableau de taille fixe. - <bitset>
- Fournit une classe conteneur spécialisée
std::bitset
représentant un tableau de bits. - <deque>
- Fournit une classe patron
std::deque
, une file sur laquelle on peut retirer et ajouter des éléments sur les deux extrémités. - <forward_list>
- Nouveau en C++11. Fournit une classe patron
std::forward_list
représentant une liste chaînée. - <list>
- Fournit une classe patron
std::list
représentant une liste doublement chaînée. - <map>
- Fournit les classes patrons
std::map
etstd::multimap
représentant un tableau associatif et une multimap. - <queue>
- Fournit une classe patron
std::queue
, une file, etstd::priority_queue
. - <set>
- Fournit les classes patron
std::set
etstd::multiset
, représentant des ensembles. - <stack>
- Fournit la classe patron
std::stack
, représentant une pile. - <unordered_map>
- Nouveau en C++11. Fournit la classe patron
std::unordered_map
etstd::unordered_multimap
représentant un tableau associatif et une multimap. - <unordered_set>
- Nouveau en C++11. Fournit la classe patron
std::unordered_set
etstd::unordered_multiset
. - <vector>
- Fournit la classe patron
std::vector
, un tableau dynamique.
Bibliothèque standard du C
[modifier | modifier le code]Chaque fichier d’en-tête de la bibliothèque standard du C est inclus dans la bibliothèque standard du C++ sous un nom différent, obtenu en retirant le suffixe '.h' et en ajoutant un 'c' au début ; par exemple, 'time.h' devient 'ctime' en C++. L’unique différence entre ces en-têtes et les en-têtes originaux de la bibliothèque standard du C est que les fonctions sont normalement placées dans l’espace de nom std:: dans les en-têtes C++. Contrairement à la norme ISO C++, la norme ISO C autorise les fonctions de la bibliothèque standard à être implémentées avec des macros.
Notes et références
[modifier | modifier le code]- (en) Bjarne Stroustrup, The Design and Evolution of C++ §8.5, Reading (Mass.), Addison Wesley, , 461 p. (ISBN 978-0-201-54330-8 et 0-201-54330-3)
- (en) « The Standard Template Library », sur HP Labs, (consulté le )
Bibliographie
[modifier | modifier le code]- [1] Bjarne Stroustrup, The Design and Evolution of C++. Addison Wesley, (ISBN 0-201-54330-3)
- [2] Alexander Stepanov, Meng Lee (1er août 1994). "The Standard Template Library". HP Labs. Consulté le 2 décembre 2011.
- [3] Nicolai M. Josuttis, The C++ Standard Library: A Tutorial and Reference (2nd Edition), Addison-Wesley Professional, 2012, (ISBN 9780132977739)
- Bjarne Stroustrup, Le langage C++, 2003, (ISBN 2-7440-7003-3)