# std::ranges::stride_view<V>::stride_view

From cppreference.com
< cpp‎ | ranges‎ | stride view

constexpr explicit stride_view( V base, ranges::range_difference_t <V> stride ); |  | (since C++23)

Constructs a `stride_view` initializing the underlying data members:

- move construct the underlying view `base_` with std::move(base),
- construct the `stride_` with stride.

If stride < 1 the behavior is undefined.

### Parameters

base | - | the source view
stride | - | the stride value

### Example

Run this code

    #include <algorithm>
    #include <iostream>
    #include <iterator>
    #include <ranges>
    #include <string_view>

    void print(std::string_view rem, auto v, std::string_view term = "\n")
    {
        std::cout << rem << ": ";
        std::ranges::copy(v, std::ostream_iterator<int>(std::cout, " "));
        std::cout << term;
    };

    int main()
    {
        auto source = std::views::iota(1, 10);
        print("source", source);

        for (int stride_value : std::views::iota(1, 6))
        {
            auto strided_view = std::views::stride(source, stride_value);

            print("stride", std::views::single(stride_value), "-> ");
            print("result", strided_view);
        }
    }

Output:

    source: 1 2 3 4 5 6 7 8 9
    stride: 1 -> result: 1 2 3 4 5 6 7 8 9
    stride: 2 -> result: 1 3 5 7 9
    stride: 3 -> result: 1 4 7
    stride: 4 -> result: 1 5 9
    stride: 5 -> result: 1 6

Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/ranges/stride_view/stride_view&oldid=156703"