std::reverse_iterator<Iter>::operator++,+,+=,--,-,-=
reverse_iterator& operator++(); | (1) | (constexpr начиная с C++17) |
reverse_iterator& operator--(); | (2) | (constexpr начиная с C++17) |
reverse_iterator operator++( int ); | (3) | (constexpr начиная с C++17) |
reverse_iterator operator--( int ); | (4) | (constexpr начиная с C++17) |
reverse_iterator operator+( difference_type n ) const; | (5) | (constexpr начиная с C++17) |
reverse_iterator operator-( difference_type n ) const; | (6) | (constexpr начиная с C++17) |
reverse_iterator& operator+=( difference_type n ); | (7) | (constexpr начиная с C++17) |
reverse_iterator& operator-=( difference_type n ); | (8) | (constexpr начиная с C++17) |
Перемещает базовый итератор в обратном направлении.
1,3) Уменьшает значение базового итератора.
2,4) Увеличивает значение базового итератора.
5) Возвращает
reverse_iterator, базовый итератор которого сдвинут на -n позиций.
6) Возвращает
reverse_iterator, базовый итератор которого сдвинут на n позиций.
7) Сдвигает базовый итератор на
-n позиций.
8) Сдвигает базовый итератор на
n позиций.Параметры
| n | - | позиция относительно текущего положения |
Возвращаемое значение
1,2)
*this
3,4) Копия
*this, созданная до изменения
5)
reverse_iterator(base() - n);
6)
reverse_iterator(base() + n);
7,8)
*this
Пример
#include <iostream>
#include <iterator>
#include <list>
#include <vector>
int main()
{
std::vector v{0, 1, 2, 3, 4};
auto rv = std::reverse_iterator{v.rbegin()};
std::cout << *(++rv) << ' '; // 3
std::cout << *(--rv) << ' '; // 4
std::cout << *(rv + 3) << ' '; // 1
rv += 3;
std::cout << rv[0] << ' '; // 1
rv -= 3;
std::cout << rv[0] << '\n'; // 4
std::list l{5, 6, 7, 8};
auto rl = std::reverse_iterator{l.rbegin()};
std::cout << *(++rl) << ' '; // OK: 3
std::cout << *(--rl) << '\n'; // OK: 4
// The following statements raise compilation error because the
// underlying iterator does not model the random access iterator:
// *(rl + 3) = 13;
// rl += 3;
// rl -= 3;
}
Вывод:
3 4 1 1 4 7 8
См. также
| перемещает итератор вперёд (шаблон функции) |
|
| вычисляет расстояние между двумя адаптерами итераторов (шаблон функции) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/iterator/reverse_iterator/operator_arith