| Iterator concepts | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Iterator primitives | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Algorithm concepts and utilities | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Indirect callable concepts | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Common algorithm requirements | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Utilities | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Iterator adaptors | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Member functions | ||||
counted_iterator::operator++counted_iterator::operator++(int)counted_iterator::operator+counted_iterator::operator+=counted_iterator::operator--counted_iterator::operator--(int)counted_iterator::operator-counted_iterator::operator-= | ||||
| Non-member functions | ||||
(C++20)(C++20) | ||||
(C++20) | ||||
(C++20) | ||||
(C++20) | ||||
(C++20) | ||||
| Helper classes | ||||
constexpr counted_iterator& operator++(); | (1) | (since C++20) |
constexpr decltype(auto) operator++(int); | (2) | (since C++20) |
constexpr counted_iterator operator++(int) requiresstd::forward_iterator<I>; | (3) | (since C++20) |
constexpr counted_iterator& operator--() requiresstd::bidirectional_iterator<I>; | (4) | (since C++20) |
constexpr counted_iterator operator--(int) requiresstd::bidirectional_iterator<I>; | (5) | (since C++20) |
constexpr counted_iterator operator+(std::iter_difference_t<I> n)const requiresstd::random_access_iterator<I>; | (6) | (since C++20) |
constexpr counted_iterator& operator+=(std::iter_difference_t<I> n) requiresstd::random_access_iterator<I>; | (7) | (since C++20) |
constexpr counted_iterator operator-(std::iter_difference_t<I> n)const requiresstd::random_access_iterator<I>; | (8) | (since C++20) |
constexpr counted_iterator& operator-=(std::iter_difference_t<I> n) requiresstd::random_access_iterator<I>; | (9) | (since C++20) |
Increments or decrements the underlying iteratorcurrent and the distance to the endlength.
The behavior of these functions is undefined if thelength would be set to a minus value.
Contents |
| n | - | the number of positions to increment or decrement the iterator adaptor |
#include <cassert>#include <initializer_list>#include <iterator> int main(){constauto v={1,2,3,4,5,6};std::counted_iterator<std::initializer_list<int>::iterator> it1{v.begin(),5}; ++it1;assert(*it1==2&& it1.count()==4);// (1)auto it2= it1++;assert(*it2==2&&*it1==3);// (3)--it1;assert(*it1==2&& it1.count()==4);// (4)auto it3= it1--;assert(*it3==2&&*it1==1);// (5)auto it4= it1+3;assert(*it4==4&& it4.count()==2);// (6)auto it5= it4-3;assert(*it5==1&& it5.count()==5);// (8) it1+=3;assert(*it1==4&& it1.count()==2);// (7) it1-=3;assert(*it1==1&& it1.count()==5);// (9)}
(C++20) | advances the iterator (function template)[edit] |
(C++20) | computes the distance between two iterator adaptors (function template)[edit] |