Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Контрольные вопросы + ответы.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
323 Кб
Скачать
☆
  1. Использование основных контейнеров стандартной библиотеки.

Контейнеры – это объекты, предназначенные для хранения совокупностей

других объектов.

Виды контейнеров: вектор (vector), список (list), очередь (queue), стек

(stack), ассоциативный массив (map), множество (set).

Вектор – динамический массив.

template < class T, class Allocator = allocator<T> > class vector;

Allocator – задаёт распределитель памяти.

Список – последовательность элементов данных, оптимизированная для их вставки и удаления. Обеспечивает представление двунаправленного линейного списка.

Спецификация списка:

template < class T, class Allocator = allocator<T> > class list;

Для list определены операторы сравнения и отсутствует оператор индексирования. Обеспечивает доступ к обоим концам списка.

Спецификация ассоциативного контейнера:

template < class Key, class T, class Comp = less<Key>, class Allocator =allocator<T> > class map;

Key – тип ключа;

T – тип предназначенных для хранения в контейнере данных;

Итераторы

Итератор – компонент для доступа к отдельным элементам контейнеров и их перебора.

Итератор является обобщением указателя.

Итератор указывает на некоторый элемент контейнера или за последний элемент контейнера.

Доступ к значению элемента осуществляется операцией *, применённой к итератору.

Категории итераторов: ввода, вывода, последовательный, двунаправленный, произвольного доступа.

Перемещение итератора к следующему или предыдущему элементу осуществляется операциями ++, -- (определены не для всех видов итераторов).

Каждый вид контейнера определяет свой набор видов итераторов.

  1. Классы функциональных объектов: создание и применение.

Функциональные объекты – это объекты классов, в которых перегружен оператор вызова функции (метод operator()). Синоним: объекты-функции.

Функциональные объекты являются обобщением функций. Они могут использоваться как функции и вместо функций.

Функциональные объекты выступают в качестве функций с состоянием (состояние сохраняется между вызовами).

Стандартная библиотека содержит набор готовых таких объектов: plus<T> (x+y), less<T> (x<y), negate<T> (-x) и другие.

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

Пример: определение функционального объекта для реализации порогового устройства: если целое число v больше заданного порога L, то выдать значение L, иначе выдать само число v.

Пример использования разработанного класса: применение порогового устройства со значением порога 0 для всех элементов вектора.

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

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

Алгоритмы предназначены для выполнения операций над содержимым контейнеров.

Алгоритмы являются порождаемыми функциями.

Группы алгоритмов:

– поэлементная обработка,

– заполнение и порождение,

– подсчёт,

– манипулирование последовательностями,

– поиск и замена,

– удаление,

– сортировка и обработка отсортированных последовательностей,

– численные алгоритмы.

В качестве параметров алгоритмы, как правило, принимают итераторы и функциональные объекты.