| ||||||||||||||||||||||
| Range primitives | |||||||
| |||||||
| Range concepts | |||||||||||||||||||
| |||||||||||||||||||
| Range factories | |||||||||
| |||||||||
| Range adaptors | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Helper items | |||||||||||||||||
| |||||||||||||||||
constexpr subrange prev(std::iter_difference_t<I> n=1)const requiresstd::bidirectional_iterator<I>; | (since C++20) | |
Returns a copy of*this whosebegin_ is decremented (or incremented ifn is negative). The actual decrement (or increment) operation is performed byadvance().
Equivalent to:auto tmp=*this;
tmp.advance(-n);
return tmp;.
Contents |
| n | - | number of decrements of the iterator |
As described above.
The difference between this function andadvance() is that the latter performs the decrement (or increment) in place.
#include <iterator>#include <list>#include <print>#include <ranges> int main(){std::list list{1,2,3,4,5}; std::ranges::subrange sub{std::next(list.begin(),2),std::prev(list.end(),2)};std::println("{} {} {}", sub, sub.prev(), sub.prev(2));}
Output:
[3] [2, 3] [1, 2, 3]
obtains a copy of thesubrange with its iterator advanced by a given distance(public member function)[edit] | |
| advances the iterator by given distance (public member function)[edit] | |
(C++11) | decrement an iterator (function template)[edit] |
(C++20) | decrement an iterator by a given distance or to a bound (algorithm function object)[edit] |