kumi v3.1.0
Exquisite Epidote
 
Loading...
Searching...
No Matches

◆ windows()

template<std::size_t N, product_type T>
requires ( N > 0 && N <= size_v<T> )
constexpr auto kumi::windows ( T &&  t)
inlineconstexpr

Creates a kumi::tuple of product_types, each containing N consecutive elements from t. Windows starts at 0 and advance by 1 element each time.

Template Parameters
NSize of the window to generate
Parameters
tthe tuple to from which to extract the windows
Returns
A tuple of product_types, each containing N consecutive elements of t
Note
Windows behaves like overlapping tiles: each inner product_type is a tile over t starting at index tile_number. All the windows are of the same size.

Helper type

namespace kumi::result
{
template<std::size_t N, product_type> struct windows;
template<std::size_t N, product_type T>
using windows_t = typename windows<N, T>::type;
}
constexpr auto windows(T &&t)
Creates a kumi::tuple of product_types, each containing N consecutive elements from t....
Definition tiler.hpp:42

Computes the return type of a call to kumi::windows

Example

#include <kumi/kumi.hpp>
#include <iostream>
int main()
{
auto t = kumi::tuple{1, 'y', 3.f, short{55}, -8, 66., "Pete"};
auto w = kumi::windows<3>(t);
std::cout << " Standard Windows " << "\n";
std::cout << w << "\n";
kumi::for_each([&](auto tile)
{
get<0>(tile)++;
},w);
std::cout << t << "\n";
auto w2 = kumi::windows<3>(kumi::to_ref(t));
std::cout << " Windows with references " << "\n";
std::cout << w2 << "\n";
kumi::for_each([&](auto tile)
{
get<0>(tile)++;
},w2);
std::cout << t << "\n";
}
constexpr void for_each(Function f, Tuple &&t, Tuples &&... ts)
Applies the Callable object f on each element of a kumi::product_type. f is applied on the values if ...
Definition for_each.hpp:32
Fixed-size collection of heterogeneous values.
Definition tuple.hpp:37