На этом шаге мы перечислим операции получения итераторов.
Векторы поддерживают стандартный набор операций для получения итераторов (таблица 1). Итераторы векторов относятся к категории итераторов произвольного доступа. Это означает, что с векторами в принципе могут использоваться все алгоритмы STL.
Операция | Описание |
---|---|
c.begin() | Возвращает итератор произвольного доступа для первого элемента |
c.end() | Возвращает итератор произвольного доступа для позиции за последним элементом |
c.rbegin() | Возвращает обратный итератор для первого элемента при переборе в обратном направлении |
c.rend() | Возвращает обратный итератор для позиции за последним элементом при переборе в обратном направлении |
Фактический тип итераторов определяется реализацией, однако для векторов итераторы часто оформляются в виде обычных указателей. Обычный указатель соответствует требованиям к итератору произвольного доступа, а поскольку по своей внутренней структуре вектор, как правило, представляет собой массив, обычные указатели обеспечивают нужное поведение. Впрочем, рассчитывать на то, что итератор является указателем, не следует. Например, в безопасной версии STL с проверкой интервальных ошибок и других потенциальных проблем итераторы обычно оформляются в виде вспомогательного класса.
Итераторы остаются действительными до момента вставки или удаления элемента с меньшим индексом или перераспределения памяти с изменением емкости (смотри шаг 130).
На следующем шаге мы рассмотрим вставку и удаление элементов.