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

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

В любой программе, кроме операторов языка, используются средства библиотек, включаемых в среду программирования. Компиляторы Microsoft Visual C++ содержат библиотеки классов для написания приложений Windows. Часть библиотек стандартизована, т.е. должна поставляться с любым компилятором языка.

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

В классах можно выделить несколько групп в соответствии с их назначением:

  • потоковые классы предназначены для управления потоками данных между оперативной памятью и внешними устройствами (дисками, консолью и т.д.), а также в пределах оперативной памяти;

  • строковый класс string предназначен для удобной и защищенной от ошибок работы с символьными строками, лишен недостатков строк в стиле С;

  • контейнерные классы – реализуют наиболее распространенные структуры для хранения данных – например, векторы, списки, множества и пр.;

  • алгоритмы предназначены для обработки элементов контейнеров;

  • итераторы обеспечивают универсальный доступ к элементам контейнеров и их перебор;

  • математические классы поддерживают эффективную обработку массивов с плавающей точкой и работу с комплексными числами;

  • диагностические классы – обеспечивают идентификацию типов и объектно-ориентированную обработку ошибок;

  • остальные классы – обеспечивают динамическое распределение памяти, обработку функциональных объектов и т.д.

Часть библиотеки, в которую входят контейнерные классы, алгоритмы и итераторы, называют стандартной библиотекой шаблонов (STLStandard Template Library). В основе архитектурных решений библиотеки STL лежат следующие особенности.

Первая особенность – разделение данных и операций (принципы противоположны принципам ООП, где объект соединяет данные и операции). Концепция STL основана на отделении данных от операций. Данные хранятся в контейнерах, а операции определяются адаптируемыми алгоритмами. Разные алгоритмы по мере необходимости применяются к разным контейнерам. За счет этого отделения достигнуты гибкость и компактность библиотеки STL.

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

Третья особенность – применение итераторов. Итераторы как бы «склеивают» контейнеры и алгоритмы, благодаря чему любой алгоритм может работать практически с любым контейнером.

Для использования контейнеров и адаптеров необходимо подключать стандартные заголовочные файлы:

заголовочный файл

назначение

#include<vector>

вектор

#include<deque>

двусторонняя очередь

#include<list>

двусвязный список

#include<stack>

стек

#include<queue>

очередь, очередь с приоритетами

#include<set>

множество, множество с дубликатами

#include<map>

словарь, словарь с дубликатами

#include<bitset>

последовательность битов, битовое множество

Для использования алгоритмов и итераторов необходимо подключать стандартные заголовочные файлы:

заголовочный файл

назначение

#include<algorithm>

алгоритмы

#include<functional>

функциональные объекты

#include<iterator>

итераторы