From cppreference.com
constexprdecltype(auto)operator[](std::iter_difference_t<I>n)constrequiresstd::random_access_iterator<I>;(since C++20)Accesses the element at specified relative location.
If count()>n is false, the behavior is undefined.
(until C++26)If count()>n is false:
If the implementation is
, a
occurs.
If the implementation is not hardened, the behavior is undefined.
(since C++26)Parameters
n - position relative to current location Return value
base()[n]
Example
Run this code
#include<array>#include<iostream>#include<iterator>#include<list>intmain(){std::arrayarray{'A','B','C','D','E'};std::counted_iteratorit{array.begin()+1,/*count:*/3};for(inti{};i!=it.count();++i)std::cout<<it[i]<<' ';std::cout<<'\n';for(inti{};i!=it.count();++i)it[i]+=('E'-'A');for(inti{};i!=it.count();++i)std::cout<<it[i]<<' ';std::cout<<'\n';std::listlist{'X','Y','Z','W'};std::counted_iteratorit2{list.begin(),3};// char x = it2[0]; // Error: requirement `random_access_iterator` was not satisfied.std::cout<<*it2<<'\n';// OK}Output:
B C D F G H X See also