Шаг 163.
Библиотека STL. Контейнеры STL. Операции над множествами и мультимножествами. Функции получения итераторов

    На этом шаге мы рассмотрим функции получения итераторов.

    Множества и мультимножества не обеспечивают прямого доступа к элементам, поэтому для такого доступа приходится использовать итераторы. Множества и мультимножества поддерживают стандартный набор операций для получения итераторов (таблица 1).

Таблица 1. Операции получения итераторов для множеств и мультимножеств
Операция Описание
c.begin() Возвращает двунаправленный итератор для первого элемента (элементы считаются константными)
c.end() Возвращает двунаправленный итератор для позиции за последним элементом (элементы считаются константными)
c.rbegin() Возвращает обратный итератор для первого элемента при переборе в обратном направлении
c.rend() Возвращает обратный итератор для позиции за последним элементом при переборе в обратном направлении

    Множества и мультимножества, как и все остальные классы ассоциативных контейнеров, поддерживают двунаправленные итераторы. Такие итераторы не могут использоваться алгоритмами, рассчитанными на итераторы произвольного доступа (например, сортировки или случайной перестановки элементов).

    Но еще более важное ограничение заключается в том, что с точки зрения итератора все элементы считаются константными. Это необходимо для того, чтобы программа не могла нарушить порядок следования элементоп, изменяя их значения. Однако в результате для элементов множества или мультимножества вызов модифицирующих алгоритмов становится невозможным. Например, удаление элементов не может осуществляться алгоритмом remove(), потому что "удаление" в действительности сводится к перезаписи следующими элементами (данная тема подробно обсуждается на 108 шаге). Элементы множеств и мультимножеств удаляются только функциями, предоставляемыми контейнером.

    На следующем шаге мы рассмотрим вставку и удаление элементов.




Предыдущий шаг Содержание Следующий шаг