Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ответы по сиаоду.doc
Скачиваний:
5
Добавлен:
27.09.2019
Размер:
136.7 Кб
Скачать

16. Библиотека шаблонов stl. Состав библиотеки шаблонов. Основные достоинства и недостатки stl. Аргументация применения.

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

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

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

  1. Контейнер (container) — хранение набора объектов в памяти.

  2. Итератор (iterator) — обеспечение средств доступа к содержимому контейнера.

  3. Алгоритм (algorithm) — определение вычислительной процедуры.

  4. Адаптер (adaptor) — адаптация компонентов для обеспечения различного интерфейса.

  5. Функциональный объект (functor) — сокрытие функции в объекте для использования другими компонентами.

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

STL обладает рядом преимуществ:

·        Код библиотеки написан профессиональными программистами, проверен и отлажен. Вам не придётся искать ошибки в реализации контейнеров или алгоритмов STL. Скорее, ошибки будут связаны с неверным пониманием концепций STL, но это вопрос опыта использования.

·        Код библиотеки написан очень эффективно с точки зрения использования оперативной памяти и быстродействия для типовых вариантов применения.

·        Библиотека предлагает унифицированный интерфейс, однообразный для всех контейнеров и алгоритмов, что после получения навыка использования библиотеки позволяет значительно повысить читаемость программы.

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

·        Библиотека хорошо документирована и описана в книгах. В случае разработки собственных контейнеров и алгоритмов документация будет, скорее всего, значительно беднее, что повысит стоимость подготовки нового специалиста.

·        Код, написанный с использованием STL легко переносится на другие компиляторы, операционные системы и платформы.

К недостаткам STL можно отнести:

·        Неприспособленность к работе со структурными типами данных.

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

·        Неадекватный интерфейс шаблона для работы со строками

·        Сложность управления пулом памяти при работе с контейнерами STL.