| Iterator concepts | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Iterator primitives | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Algorithm concepts and utilities | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Indirect callable concepts | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Common algorithm requirements | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Utilities | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Iterator adaptors | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Member functions | ||||
counted_iterator::operator[] | ||||
| Non-member functions | ||||
(C++20)(C++20) | ||||
(C++20) | ||||
(C++20) | ||||
(C++20) | ||||
(C++20) | ||||
| Helper classes | ||||
constexpr decltype(auto) operator[](std::iter_difference_t<I> n)const requiresstd::random_access_iterator<I>; | (since C++20) | |
Accesses the element at specified relative location. The behavior is undefined ifn is not less than the recorded distance to the end.
Contents |
| n | - | position relative to current location |
this->base()[n]
#include <array>#include <iostream>#include <iterator>#include <list> int main(){std::array array{'A','B','C','D','E'}; std::counted_iterator it{array.begin()+1,/*count:*/3}; for(int i{}; i!= it.count();++i)std::cout<< it[i]<<' ';std::cout<<'\n'; for(int i{}; i!= it.count();++i) it[i]+=('E'-'A'); for(int i{}; i!= it.count();++i)std::cout<< it[i]<<' ';std::cout<<'\n'; std::list list{'X','Y','Z','W'};std::counted_iterator it2{list.begin(),3};// char x = it2[0]; // Error: requirement `random_access_iterator` was not satisfied.std::cout<<*it2<<'\n';// OK}
Output:
B C DF G HX
| accesses the pointed-to element (public member function)[edit] |