KUMI v4.0.0
Flawless Fluorite
Loading...
Searching...
No Matches

◆ windows

template<std::size_t N>
tiles_t<N, 1> kumi::windows {}
inlineconstexprnodiscard

Callable object creating a tuple of product types, each containing N consecutive elements from t. Windows starts at 0 and advance by 1 element each time.

On record types, this function operates on elements as if they were ordered. The considered order is the order of declaration.

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.

Header file

#include <kumi/algorithm/apply.hpp>

Call Signature

template<std::size_t N, product_type T>
constexpr auto windows<N>(T && t);
constexpr tiles_t< N, 1 > windows
Callable object creating a tuple of product types, each containing N consecutive elements from t....
Definition tiler.hpp:164

Template Parameters

  • N: Size of the window to generate

Parameters

  • t: Product Type from which to extract the windows

Return value

  • A tuple of product types, each containing N consecutive elements of t

Helper type

template<std::size_t N, kumi::concepts::product_type T> struct windows
{
using type = decltype(kumi::windows<N>(std::declval<T>()));
};
template<std::size_t N, kumi::concepts::product_type T>
using windows_t = typename kumi::result::windows<N, T>::type;

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

Examples

  • Tuple
    #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";
    std::cout << " Windows with references " << "\n";
    std::cout << w2 << "\n";
    kumi::for_each([&](auto tile)
    {
    get<0>(tile)++;
    },w2);
    std::cout << t << "\n";
    }
    constexpr for_each_t for_each
    Callable object applying the Callable object f on each element of a product type.
    Definition for_each.hpp:152
    Fixed-size collection of heterogeneous values.
    Definition tuple.hpp:33
  • Record
    #include <kumi/kumi.hpp>
    #include <iostream>
    int main()
    {
    using namespace kumi::literals;
    auto r = kumi::record{"a"_id = 1, "b"_id = 'y', "c"_id = 3.f, "d"_id = short{55}
    ,"e"_id = -8, "f"_id = 66., "g"_id = "Pete"};
    auto w = kumi::windows<3>(r);
    std::cout << " Standard Windows " << "\n";
    std::cout << w << "\n";
    kumi::for_each([&](auto tile)
    {
    },w);
    std::cout << r << "\n";
    std::cout << " Windows with references " << "\n";
    std::cout << w2 << "\n";
    kumi::for_each([&](auto tile)
    {
    },w2);
    std::cout << r << "\n";
    }
    decltype(auto) constexpr get(record< Ts... > &r) noexcept
    Extracts the Ith field from a kumi::record.
    Definition record.hpp:618
    Fixed-size collection of heterogeneous tagged fields, tags are unique.
    Definition record.hpp:36
    constexpr auto values_of(T &&t) noexcept
    Extracts the values of the fields of a kumi::product_type.
    Definition tuple.hpp:772