# 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$^,$.
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 :
à chaque appel d'objet, classe ou fonction de celle-ci.

## En-têtes

Les fichiers suivants contiennent les déclarations de la bibliothèque standard du C++.

### Conteneurs
#### <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.

#### <queue>

    Fournit une classe patron std::queue, une file, et std::priority_queue.

#### <set>

    Fournit les classes patron std::set et std::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 et std::unordered_multimap représentant un tableau associatif et une multimap.

#### <unordered_set>

    Nouveau en C++11. Fournit la classe patron std::unordered_set et std::unordered_multiset.

#### <vector>

    Fournit la classe patron std::vector, un tableau dynamique.

### Bibliothèque standard du C

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.