| Iterator concepts | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Iterator primitives | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Algorithm concepts and utilities | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Indirect callable concepts | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Common algorithm requirements | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Utilities | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Iterator adaptors | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Member functions | ||||
reverse_iterator::operator++reverse_iterator::operator+reverse_iterator::operator+=reverse_iterator::operator--reverse_iterator::operator-reverse_iterator::operator-= | ||||
| Non-member functions | ||||
(C++20) | ||||
(C++20) | ||||
(C++14) |
reverse_iterator& operator++(); | (1) | (constexpr since C++17) |
reverse_iterator& operator--(); | (2) | (constexpr since C++17) |
reverse_iterator operator++(int); | (3) | (constexpr since C++17) |
reverse_iterator operator--(int); | (4) | (constexpr since C++17) |
reverse_iterator operator+( difference_type n)const; | (5) | (constexpr since C++17) |
reverse_iterator operator-( difference_type n)const; | (6) | (constexpr since C++17) |
reverse_iterator& operator+=( difference_type n); | (7) | (constexpr since C++17) |
reverse_iterator& operator-=( difference_type n); | (8) | (constexpr since C++17) |
Increments or decrements the underlying iterator reversely.
| Overload | Equivalent to |
|---|---|
| (1) | --current;return*this; |
| (2) | ++current;return*this; |
| (3) | reverse_iterator tmp=*this;--current;return tmp; |
| (4) | reverse_iterator tmp=*this;++current;return tmp; |
| (5) | return reverse_iterator(current - n); |
| (6) | return reverse_iterator(current + n); |
| (7) | current -= n;return*this; |
| (8) | current += n;return*this; |
Contents |
| n | - | position relative to current location |
As described above.
#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)<<' ';// 3std::cout<<*(--rv)<<' ';// 4std::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: 3std::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;}
Output:
3 4 1 1 47 8
| advances the iterator (function template)[edit] | |
| computes the distance between two iterator adaptors (function template)[edit] |