> For the complete documentation index, see [llms.txt](https://sweethome.gitbook.io/advanced-cpp/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://sweethome.gitbook.io/advanced-cpp/standard_library/std_structure.md).

# Структура стандартной библиотеки С++

Стандартная библиотека С++ состоит из нескольких частей:

* Стандартная библиотека С
* Библиотека потоков данных
* Обработка исключений
* Библиотека STL
* Некоторые дополнительные библиотеки

Заголовочные файлы стандартной библиотеки подчиняются следующим правилам: заголовочный файл пишется без расширения; библиотеки языка С начинаются с буквы с (например, вместо *math.h* используется ***cmath***).

Стандартная библиотека С++ объявлена в пространстве имён *std*.

Наибольшей частью стандартной библиотеки С++ является библиотека STL (Standard Template Library – Стандартная Библиотека Шаблонов). Библиотека STL содержит пять основных видов компонентов:

* **алгоритм** (algorithm): определяет вычислительную процедуру.
* **контейнер** (container): управляет набором объектов в памяти.
* **\[\[Итераторы|итератор]]** (iterator): обеспечивает для алгоритма средство доступа к содержимому контейнера.
* **функциональный объект** (function object): инкапсулирует функцию в объекте для использования другими компонентами.
* **адаптер** (adaptor): адаптирует компонент для обеспечения различного интерфейса.

Данное разделение позволяет нам уменьшить количество компонентов. Например, вместо написания функции поиска элемента для каждого вида контейнера мы обеспечиваем единственную версию, которая работает с каждым из них, пока удовлетворяется основной набор требований.
