std::ranges::adjacent_transform_view<V,F,N>::adjacent_transform_view

From cppreference.com
 
 
Ranges library
Range access
Range conversions
(C++23)
Range primitives



Dangling iterator handling
Range concepts
Views

Range factories
Range adaptors
Range generators
Range adaptor objects
Range adaptor closure objects
Helper items
(until C++23)(C++23)


 
 
adjacent_transform_view() = default;
(1) (since C++23)
constexpr explicit adjacent_transform_view( V base, F fun );
(2) (since C++23)

Constructs an adjacent_transform_view.

1) Default constructor. Default-initializes the underlying data members fun_ and inner_.
2) Move constructs the underlying data members: fun_ with std::move(fun) and inner_ with std::move(base).

Parameters

base - the underlying view
fun - the N-ary transformation function

Example

A link to test: Compiler Explorer/g++-13

#include <algorithm>
#include <iostream>
#include <iterator>
#include <ranges>
 
int main()
{
    constexpr static auto v = {1, 2, 3, 4, 5};
    constexpr auto mul = [](auto... x) { return (... * x); };
    constexpr auto view = std::views::adjacent_transform<3>(v, mul);
    std::ranges::copy(view, std::ostream_iterator<int>(std::cout, " "));
    std::cout << '\n';
}

Output:

6 24 60