Контейнерный класс – это класс-шаблон, в котором типы данных объявлены произвольными, а набор операций и функций над ними фиксирован. Таким образом, можно сказать, что контейнер – это объект, предназначенный для хранения и обработки других объектов. Ядро БСШ состоит из следующих основных компонент:

  •  контейнеров,

  • итераторов,

  • алгоритмов,

  • распределителей.

    Контейнеры – это классы-шаблоны. Для каждого из классов определен набор конструкторов, деструкторы, характерные для класса операции и функции.

    Итераторы – это объекты специальных классов, предназначенные для перебора объектов в контейнерах. По своей сути итератор – это указатель на объекты контейнера. Для каждого класса-шаблона предназначен свой итератор. Действительно, алгоритмы перебора разных объектов отличаются: элементы массива выбираются обычно произвольно с помощью индекса (прямой доступ), а в связанном списке используется последовательный доступ  по полю связи, например p=p->next. Итераторы позволяют перебирать элементы с начала контейнера или с конца (обратные итераторы).

    Алгоритмы –  это набор функций-шаблонов, выполняющих однотипную обработку объектов разных контейнеров. Например, сортировку (пирамидальную), слияние, бинарный поиск, поиск максимума и минимума, удаление элементов и т.д. (всего 66 функций).

    Распределители памяти – это объекты специального класса allocator, управляющие процессом выделения памяти для контейнеров.

    Для использования того или иного контейнера надо подключить соответствующую библиотеку.

    Перечислим часто используемые контейнеры:

    Контейнер

    Назначение

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

    Degue

    Двусторонняя очередь (дек)

    <degue.h>

    List

    Линейный двунаправленный список

    <list.h>

    Queue

    Очередь (удаление сначала, добавление – с конца)

    <queue.h>

    Set

    Множество (элементы не повторяются)

    <set.h>

    Stack

    Стек

    <stack.h>

    vector

    Динамический массив

    <vector.h>

    В библиотеку входит также не контейнерный класс string. Для использования функций шаблонов библиотеки надо подключить заголовочный файл <algorithm.h>.