Библиотека stl в языке C++ как понятно из расшифровки названия - это стандартная библиотека шаблонов. То есть внутри нее находятся различные наборы базовых алгоритмов, функций и методов, позволяющих нам работать в C++. Так же именно там находятся различные виды контейнеров, то есть сущностей, позволяющих хранить много однотипных объектов. Примеры контейнеров - vector (массив), set (множество), map и т.д.
Сама библиотека была начата как сторонний проект, и, когда она влилась в основную структуру C++, было множество пересечений и повторений. Даже на данный момент можно найти множество примеров таких совпадений.
Пожалуй, стоит отметить следующие основные компоненты библиотеки:
- алгоритмы - описания соответствующих процедур,
- контейнеры - описания различных типов контейнеров,
- итераторы - сущности, которые указывают на некоторый элемент контейнера и умеют переходить к следующему элементу, фактически это аналог счётчиков,
- функциональные объекты, которые нужны, в основном, чтобы изменять поведение алгоритмов, например, делать сортировку по возрастанию или убыванию.
Подобное разделение позволило существенно упростить структуру библиотеки, уменьшив и стандартизировав различные виды компонентов по функционалу. А это означает гибкость и эффективность stl.