Введение в стандартную библиотеку шаблонов C++. Описание, примеры использования, учебные задачи. Михаил Абрамян
Чтение книги онлайн.

Читать онлайн книгу Введение в стандартную библиотеку шаблонов C++. Описание, примеры использования, учебные задачи - Михаил Абрамян страница 9

СКАЧАТЬ важно знать, когда в результате выполнения этих действий итераторы и ссылки становятся недействительными (одновременно со ссылками становятся недействительными и указатели).

      Вектор

      Вставка:

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

      • если перераспределения памяти не производится, то итераторы и ссылки до позиции вставки остаются корректными, а прочие – недействительными.

      Удаление:

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

      Дек

      Вставка:

      • все итераторы делаются недействительными;

      • ссылки делаются недействительными при вставке в середину дека и остаются корректными при вставке в начало или конец дека.

      Удаление:

      • все итераторы делаются недействительными;

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

      Список

      Вставка:

      • все итераторы и ссылки остаются корректными.

      Удаление:

      • все итераторы и ссылки на оставшиеся элементы списка остаются корректными.

      1.2.8. Контейнеры-адаптеры и контейнеры, добавленные в стандарт C++11

      В данном пункте, как и в пунктах 1.2.2–1.2.7, посвященных основным видам контейнеров, при описании конструкторов и функций-членов контейнеров не указывается дополнительный тип Alloc, который обычно устанавливается по умолчанию. Все рассматриваемые в данном пункте контейнеры определены в пространстве имен std.

      Начнем с описания контейнеров-адаптеров: стека (stack), очереди (queue) и очереди с приоритетом (priority_queue).

      Особенностью контейнеров-адаптеров является то, что они основаны на одном из «настоящих» контейнеров, который хранится в качестве внутреннего контейнера (underlying container) с именем c – защищенного члена контейнера-адаптера. Для очереди с приоритетом используется еще один защищенный член – функциональный объект comp, используемый для сравнения элементов.

      Реализация функций-членов контейнеров-адаптеров сводится к вызову соответствующих функций-членов «внутреннего» контейнера c. При этом набор средств, доступных для контейнеров-адаптеров, существенно сокращен по сравнению со средствами внутреннего контейнера. В частности, с контейнерами-адаптерами не связываются итераторы, что не позволяет их использовать совместно со стандартными алгоритмами.

      В таблице 3 приводится описание шаблонов контейнеров-адаптеров.

      Таблица 3

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

screen_image_27_372_53

СКАЧАТЬ