3.1 KiB
[reverse.iterator]
24 Iterators library [iterators]
24.5 Iterator adaptors [predef.iterators]
24.5.1 Reverse iterators [reverse.iterators]
24.5.1.2 Class template reverse_iterator [reverse.iterator]
namespace std {templateclass reverse_iterator {public:using iterator_type = Iterator; using iterator_concept = see below; using iterator_category = see below; using value_type = iter_value_t; using difference_type = iter_difference_t; using pointer = typename iterator_traits::pointer; using reference = iter_reference_t; constexpr reverse_iterator(); constexpr explicit reverse_iterator(Iterator x); template constexpr reverse_iterator(const reverse_iterator& u); template constexpr reverse_iterator& operator=(const reverse_iterator& u); constexpr Iterator base() const; constexpr reference operator*() const; constexpr pointer operator->() const requires see below; constexpr reverse_iterator& operator++(); constexpr reverse_iterator operator++(int); constexpr reverse_iterator& operator--(); constexpr reverse_iterator operator--(int); constexpr reverse_iterator operator+ (difference_type n) const; constexpr reverse_iterator& operator+=(difference_type n); constexpr reverse_iterator operator- (difference_type n) const; constexpr reverse_iterator& operator-=(difference_type n); constexpr unspecified operator[](difference_type n) const; friend constexpr iter_rvalue_reference_t iter_move(const reverse_iterator& i) noexcept(see below); template<indirectly_swappable Iterator2>friend constexpr void iter_swap(const reverse_iterator& x, const reverse_iterator& y) noexcept(see below); protected: Iterator current; };}
The member typedef-name iterator_concept denotes
random_access_iterator_tag if Iterator modelsrandom_access_iterator, and
bidirectional_iterator_tag otherwise.
The member typedef-name iterator_category denotes
random_access_iterator_tag if the typeiterator_traits<Iterator>::iterator_category modelsderived_from<random_access_iterator_tag>, and
iterator_traits<Iterator>::iterator_category otherwise.