table of contents
std::ranges::stride_view::stride_view(3) | C++ Standard Libary | std::ranges::stride_view::stride_view(3) |
NAME¶
std::ranges::stride_view::stride_view - std::ranges::stride_view::stride_view
Synopsis¶
constexpr explicit stride_view( V base,
ranges::range_difference_t<V> (since C++23)
stride );
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
2024.06.10 | http://cppreference.com |