Класс reverse_iterator
Класс шаблона является адаптером итератора, описывающим объект обратного итератора, поведение которого аналогично поведению итератора произвольного доступа или двунаправленного итератора, но в обратном порядке. Он включает прохождение через диапазон в обратном порядке.
template <class RandomIterator>
class reverse_iterator
Параметры
- RandomIterator
Тип, представляющий итератор для адаптации к применению в обратном порядке.
Заметки
Существующие контейнеры стандартной библиотеки шаблонов также задают типы reverse_iterator и const_reverse_iterator и обладают функциями-членами rbegin и rend, которые возвращают обратные итераторы. Эти итераторы обладают семантикой перезаписи. Адаптер reverse_iterator дополняет эти функции, поскольку предоставляет семантику вставки и может также использоваться в сочетании с потоками.
Итераторы reverse_iterator, требующие двунаправленного итератора, не должны обращаться к функциям-членам operator+=, operator+, operator-=, operator- или operator[], поскольку данные функции-члены могут использоваться только в сочетании с итераторами произвольного доступа.
Если диапазон итератора — [_First, _Last), где квадратная скобка слева обозначает включение в диапазон элемента _First, а круглая скобка справа — включение всех элементов до элемента _Left за исключением самого элемента _Left . Те же элементы будут включены в обращенную последовательность [rev – _First, rev – _Left); поэтому если элемент _Left на единицу превышает последний элемент в последовательности, то первый элемент rev – _First в обращенной последовательности указывает на элемент *(_Left – 1 ). Идентификатор, который связывает все обратные итераторы с их базовыми итераторами:
&*(reverse_iterator ( i ) ) == &*( i – 1 ).
На практике это означает, что в обращенной последовательности reverse_iterator будет ссылаться на элемент, позиция которого на единицу превышает позицию элемента, на который итератор ссылается в исходной последовательности (т. е. находится справа от данного элемента). Поэтому если итератор обращался к элементу 6 в последовательности (2, 4, 6, 8), то итератор reverse_iterator будет обращаться к элементу 4 в обращенной последовательности (8, 6, 4, 2).
Конструкторы
Формирование итератора reverse_iterator по умолчанию или итератора reverse_iterator из базового итератора. |
Определения типов
Тип, обеспечивающий разницу между двумя итераторами reverse_iterator, которые ссылаются на элементы в одном контейнере. |
|
Тип, предоставляющий базовый итератор для итератора reverse_iterator. |
|
Тип, содержащий указатель на элемент, к которому обращается итератор reverse_iterator. |
|
Тип, содержащий ссылку на элемент, к которому обращается итератор reverse_iterator. |
Функции-члены
Восстановление базового итератора из соответствующего итератора reverse_iterator. |
Операторы
Возвращение элемента, к которому обращается reverse_iterator. |
|
Добавление смещения к итератору и возврат нового итератора reverse_iterator, который обращается к вставленному элементу в новой позиции смещения. |
|
Увеличение reverse_iterator до следующего элемента. |
|
Добавление заданного смещения из итератора reverse_iterator. |
|
Вычитание смещения из итератора reverse_iterator с возвратом итератора reverse_iterator, который обращается к элементу в позиции со сдвигом. |
|
Уменьшение reverse_iterator до предыдущего элемента. |
|
Вычитание заданного смещения из итератора reverse_iterator. |
|
Возвращение указателя на элемент, к которому обращается reverse_iterator. |
|
Возврат ссылки на смещение элемента из элемента, к которому обращается reverse_iterator, на указанное число позиций. |
Требования
Заголовок: <iterator>
Пространство имен: std