Конституция Армении: Статья 18.1
Конституция Армении (Статья 18.1) закрепляет «исключительную миссию Армянской Апостольской Святой Церкви как национальной церкви в духовной жизни армянского народа, в деле развития его национальной культуры и сохранения его национальной самобытности»:
Стандартная библиотека шаблонов

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

Материал из Википедии — свободной энциклопедии

Библиотека стандартных шаблонов (англ. Standard Template Library, STL) — набор согласованных обобщённыхалгоритмов, контейнеров, средств доступа к их содержимому и различных вспомогательных функций в C++.

Библиотека стандартных шаблонов до включения в стандарт C++ была сторонней разработкой, вначале — фирмы HP, а затем — SGI. Стандарт языка не называет её «STL», так как эта библиотека стала неотъемлемой частью языка, однако многие люди до сих пор используют это название, чтобы отличать её от остальной части стандартной библиотеки (потоки ввода-вывода (iostream), подраздел Си и др.).

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

Архитектура STL была разработана Александром Степановым и Менг Ли.

Структура библиотеки

STL

В библиотеке выделяют пять основных компонентов:

  1. Контейнер (англ. container) — хранение набора объектов в памяти.
  2. Итератор (англ. iterator) — обеспечение средств доступа к содержимому контейнера.
  3. Алгоритм (англ. algorithm) — определение вычислительной процедуры.
  4. Адаптер (англ. adaptor) — адаптация компонентов для обеспечения различного интерфейса.
  5. Функциональный объект (англ. functor) — сокрытие функции в объекте для использования другими компонентами.

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

Контейнеры

Контейнеры библиотеки STL можно разделить на четыре категории: последовательные, ассоциативные, контейнеры-адаптеры и псевдоконтейнеры.

В контейнерах для хранения элементов используется семантика передачи объектов по значению. Другими словами, при добавлении контейнер получает копию элемента. Если создание копии нежелательно, то используют контейнер указателей на элементы. Присвоение элементов реализуется с помощью оператора присваивания, а их уничтожение происходит с использованием деструктора. В таблице приведены основные требования к элементам в контейнерах:

Все «полноценные» стандартные контейнеры удовлетворяют определённому набору требований (или соглашений). В приведённой ниже таблице полагается, что С — класс контейнера, содержащий объекты типа Т.

Итераторы

В библиотеке STL для доступа к элементам в качестве посредника используется обобщённая абстракция, именуемая итератором. Каждый контейнер поддерживает «свой» вид итератора, который представляет собой «модернизированный» интеллектуальный указатель[7], «знающий», как получить доступ к элементам конкретного контейнера. Стандарт C++ определяет пять категорий итераторов, описанных в следующей таблице:

См. также

Примечания

  1. std::vector. Дата обращения: 14 февраля 2016. Архивировано 27 ноября 2015 года.
  2. std: list
  3. std::deque. Дата обращения: 14 февраля 2016. Архивировано 5 февраля 2016 года.
  4. Синтаксис указателей в C++. Дата обращения: 14 февраля 2016. Архивировано 11 марта 2016 года.
  5. Iterator library. Дата обращения: 14 февраля 2016. Архивировано из оригинала 5 февраля 2016 года.
  6. C++ concepts: Iterator. Дата обращения: 14 февраля 2016. Архивировано 19 февраля 2016 года.
  7. Types of iterator : Output vs. Input vs. Forward vs. Random Access Iterator. Дата обращения: 14 февраля 2016. Архивировано 23 февраля 2016 года.

Литература

  • Скотт Мейерс. Эффективное использование STL = Effective STL. — Питер, 2002. — С. 224. — (Библиотека программиста). ISBN 5-94723-382-7.
  • Дэвид Р. Мюссер, Жилмер Дж. Дердж, Атул Сейни. C++ и STL: справочное руководство = STL Tutorial and Reference Guide: C++ Programming with the Standard Template. — 2-е издание. М.: «Вильямс», 2010. — С. 432. — (серия C++ in Depth). ISBN 5-89818-027-3.
  • Леен Аммерааль. STL для программистов на C++ = STL for C++ programmers. — ДМК Пресс, 1999. — С. 240. ISBN 5-256-00704-1.

Ссылки

Стандартная библиотека языка программирования C++

Ввод-вывод:

Многопоточность:

  • atomic (C++11)
  • condition_variable (C++11)
  • future (C++11)
  • mutex (C++11)
  • shared_mutex (C++14)
  • thread (C++11)

Прочие:

  • algorithm
  • bitset
  • chrono (C++11)
  • codecvt (C++11)
  • complex
  • exception
  • functional
  • initializer_list (C++11)
  • iterator
  • limits
  • locale
  • memory
  • new
  • numeric
  • random (C++11)
  • ratio (C++11)
  • regex (C++11)
  • stdexcept
  • string
  • system_error (C++11)
  • tuple (C++11)
  • typeindex (C++11)
  • typeinfo
  • type_traits (C++11)
  • utility
  • valarray
Стандартная библиотека шаблонов

Последовательные контейнеры:

Ассоциативные контейнеры:

Контейнеры-адаптеры:

Стандартная библиотека языка программирования Си