Библиотека стандартных шаблонов или STL - это библиотека C++ общих контейнеров, итераторов, алгоритмов и функциональных объектов. Когда C++ был стандартизован, большие части STL были приняты в стандартную библиотеку, и эти части в стандартной библиотеке также иногда ошибочно называются коллективно "STL".

Стандартная библиотека шаблонов, или STL, представляет собой C++ библиотеку универсальных контейнеров, итераторов, алгоритмов и функциональных объектов. Первоначально разработанный Александром Степановым и Мэн Ли и опубликованный HP в 1995 году. Значительные части STL были приняты с изменениями в стандартной библиотеке ISO C++.

Обратите внимание, что имя STL неоднозначно, так как оно может относиться к разным вещам. Ниже приведены типичные предполагаемые значения (рекомендуемые теги в скобках):

  • Исходная реализация HP ( или )
  • Библиотека SGI STL ( или )
  • Часть, полученная из HP STL стандартной библиотеки C++ ( и )
  • Части шаблона стандартной библиотеки C++ ( и )
  • Вся стандартная библиотека C++ ( и )

Последние два определения, строго говоря, неверны; стандарт C++ никогда не упоминает ни "STL", ни "стандартную библиотеку шаблонов". На практике, однако, людям редко нужно обращаться к библиотеке HP, и поэтому "STL" почти всегда используется для описания производных от STL частей стандартной библиотеки (алгоритмы, итераторы и контейнеры) или частей шаблона.

Элементы программирования

Большинство элементов программирования STL находятся в пространстве имен std. Контейнеры, алгоритмы, итераторы и другие вспомогательные конструкции существуют в различных заголовках, но все они находятся внутри пространства имен std. Основной и наиболее часто используемый контейнер, vector может использоваться:

  • Включая заголовок <vector>
  • Объявление переменной по полному имени:

    std::vector<int> IntV;
    

    или включив все std (Пожалуйста, воздержитесь от этого):

    using namespace std;
    vector<int> IntV;
    

    или потянув за определенный символ:

    using std::vector;
    vector<int> IntV;
    

Все остальные элементы программирования могут быть использованы по аналогичной схеме.

Прелесть STL в том, что контейнеры (list, unordered_map и т.д.), Алгоритмы (sort, count_if), итераторы (обратный итератор, константный итератор и т.д.) Не зависят друг от друга, но могут использоваться вместе не зная внутренностей другого элемента. Контейнеры и алгоритмы связаны с помощью итераторов.

Ресурсы

* Эта ссылка не является нормативной.

Книги