home | help
std::ranges...:stride_view(3)  C++ Standard Libary std::ranges...: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

http://cppreference.com 	   2024.06.10	   std::ranges...:stride_view(3)

home | help