Files
2025-10-25 03:02:53 +03:00

1.8 KiB
Raw Permalink Blame History

[range.adjacent.overview]

25 Ranges library [ranges]

25.7 Range adaptors [range.adaptors]

25.7.27 Adjacent view [range.adjacent]

25.7.27.1 Overview [range.adjacent.overview]

1

#

adjacent_view takes a view and produces a view whose Mth element is a tuple of references to the Mth through (M+N−1)th elements of the original view.

If the original view has fewer than N elements, the resulting view is empty.

2

#

The name views::adjacent denotes a range adaptor object ([range.adaptor.object]).

Given a subexpression E and a constant expression N, the expression views::adjacent(E) is expression-equivalent to

((void)E, auto(views::empty<tuple<>>)) if N is equal to 0 anddecltype((E)) models forward_range,

otherwise, adjacent_view<views::all_t<decltype((E))>, N>(E).

[Example 1: vector v = {1, 2, 3, 4};

for (auto i : v | views::adjacent<2>) { cout << "(" << std::get<0>(i) << ", " << std::get<1>(i) << ") "; // prints (1, 2) (2, 3) (3, 4)} — end example]

3

#

Define REPEAT(T, N) as a pack of N types, each of which denotes the same type as T.