|
Range primitives | |||||||
|
Range concepts | |||||||||||||||||||
|
Range factories | |||||||||
|
Range adaptors | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
Helper items | |||||||||||||||||
|
Member functions | ||||
(C++26) | ||||
Iterator | ||||
Member functions | ||||
Non-member functions | ||||
Sentinel | ||||
Member functions | ||||
Non-member functions | ||||
template<bool Const> class/*iterator*/ | (since C++23) (exposition only*) | |
The return type ofadjacent_view::begin
, and ofadjacent_view::end
when the underlying viewV
is acommon_range
.
The type/*iterator*/<true> is returned by the const-qualified overloads. The type/*iterator*/<false> is returned by the non-const-qualified overloads.
Contents |
Member type | Definition |
Base (private) | const V ifConst istrue, otherwiseV. (exposition-only member type*) |
iterator_category | std::input_iterator_tag |
iterator_concept |
|
value_type | std::tuple</*REPEAT*/(ranges::range_value_t<Base>, N)...>; |
difference_type | ranges::range_difference_t<Base> |
Member object | Definition |
current_ (private) | std::array<ranges::iterator_t<Base>, N>. (exposition-only member object*) |
constructs an iterator (public member function) | |
accesses the element (public member function) | |
accesses an element by index (public member function) | |
advances or decrements the underlying iterators (public member function)[edit] |
compares the underlying iterators (function) | |
(C++23) | performs iterator arithmetic (function) |
(C++23) | casts the result of dereferencing the underlying iterator to its associated rvalue reference type (function) |
(C++23) | swaps the objects pointed to by two underlying iterators (function) |
#include <cassert>#include <concepts>#include <list>#include <ranges>#include <tuple>#include <utility>#include <vector> int main(){auto v=std::vector{0,1,2,3,4,5};auto i=(v| std::views::adjacent<3>).begin();using I= decltype(i); static_assert(std::same_as<I::value_type,std::tuple<int,int,int>>); static_assert(std::same_as<I::iterator_concept,std::random_access_iterator_tag>);// some of available operators:++i; i++;--i; i--; i+=2; i-=2;assert(i[2]==std::tuple(2,3,4));using DI= decltype(*i); static_assert(std::same_as<DI,std::tuple<int&,int&,int&>>); std::get<1>(*i)=42;// modifies v[1] via iterator iassert(v[1]==42); auto l=std::list{0,1,2,3,4,5};auto j=(l| std::views::adjacent<3>).begin();using J= decltype(j); static_assert(std::same_as<J::value_type,std::tuple<int,int,int>>); static_assert(std::same_as<J::iterator_concept,std::bidirectional_iterator_tag>);++j;--j; j++; j--;// some of available operators// j += 2; j -= 2; // error: these operator are not available// std::ignore() = j[1]; // for bidirectional iterator}