Namespaces
Variants

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

cppreference.net에서
 
 
Ranges 라이브러리
Range 어댑터
 
 
constexpr explicit stride_view( V base, ranges::range_difference_t<V> stride );
(C++23부터)

기본 데이터 멤버를 초기화하여 stride_view을(를) 생성합니다:

  • 기본 뷰 base_을(를) std::move(base)로 이동 생성하고,
  • stride_을(를) stride로 구성합니다.

stride < 1인 경우 동작은 정의되지 않습니다.

매개변수

base - 소스 뷰
stride - 스트라이드 값

예제

#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);
    }
}

출력:

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