Главная arrow С++ (часть 4) arrow Стандартная библиотека шаблонов

Стандартная библиотека шаблонов

Есть одна составная часть стандартной библиотеки классов, которая настолько важна, что заслуживает особого внимания, — это Standard Template Library (STL, Стандартная библиотека шаблонов). Создание STL стало кардинальным событием, которое изменило взгляд программистов на использование библиотеки языка программирования. Ее воздействие было столь, глубоко, что сказалось на разработке появившихся позже языков. Например, средства для обработки групп объектов (Collections Framework) в языках Java и С# скопированы непосредственно из STL.
Основа STL — это сложный набор шаблонных классов (или классов-шаблонов) и функций, реализующих многие популярные и общеупотребительные структуры данных, на которые STL ссылается как на контейнеры. Например, библиотека включает контейнеры, которые поддерживают векторы, списки, очереди и стеки. Поскольку библиотека STL построена из шаблонных классов и функций, ее контейнеры подходят практически для любого типа данных. Таким образом, STL снабжает огромное множество разнообразных задач программирования готовыми решениями. Хотя ее практическое значение для программиста С++ нельзя недооценивать, есть более существенная причина для подтверждения важности STL. Она была авангардом в области революционных разработок программного обеспечения для компонентов. С давних времен программисты искали пути для повторного использования их кода. Поскольку разработка и отладка — очень дорогие процессы, повторное использование кода крайне желательно. Раньше этого добивались копированием кода из одной программы в буфер и последующей вставкой его из буфера в другую программу (конечно, этот способ применяют и сегодня). Позже программисты создали библиотеки многократно используемых функций, такие как предлагаемые языком С++. Вскоре их сменили стандартизованные библиотеки классов.
Построенная на базе библиотеки классов STL взяла на вооружение концепцию, ставшую важным шагом в дальнейшем. Это разделение библиотеки на модули, описывающие типовые компоненты, которые подходят для самых разных данных. К тому же, поскольку STL — расширяемая библиотека, вы можете определить собственные контейнеры, добавить собственные алгоритмы и даже адаптировать встроенные контейнеры. Возможность расширения, адаптации и повторного использования — суть программного компонента.
Сегодня, когда революция в разработке программной модели компонентов близка к завершению, легко забыть, что именно STL послужила основой, включая модульную функциональность, стандартизованные интерфейсы и расширяемость благодаря механизму наследования. История вычислительной техники и компьютерных наук назовет STL одним из краеугольных камней в проектировании языков программирования.