Namespaces
Variants

std::ranges::slide_view<V>::end

From ko.cppreference.net
 
 
Ranges 라이브러리
Range 어댑터
 
 
constexpr auto end()
    requires (!(/*simple-view*/<V> && /*slide-caches-nothing*/<const V>));
(1) (C++23부터)
constexpr auto end() const
    requires /*slide-caches-nothing*/<const V>;
(2) (C++23부터)

senitel 또는 iterator를 반환하며, 이는 slide_view의 끝을 나타냅니다.

1) base_과 n_을 기본 데이터 멤버라고 합시다. 다음과 동등합니다:
  • 만약 V가 slide-caches-nothing를 모델링하면, return iterator<false>(ranges::begin(base_) + ranges::range_difference_t<V>(size()), n_);.
  • 그렇지 않고, 만약 V가 slide-caches-last를 모델링하면, return iterator<false>(ranges::prev(ranges::end(base_), n_ - 1, ranges::begin(base_)), n_);.
  • 그렇지 않고, 만약 V가 common_range를 모델링하면, return iterator<false>(ranges::end(base_), ranges::end(base_), n_);.
  • 그렇지 않으면, return sentinel(ranges::end(base_));.
만약 V가 slide-caches-last을 모델링하면, 이 함수는 이후 호출에서 사용하기 위해 결과를 cached_end_ 내에 캐시합니다. 이는 range에서 요구하는 분할 상환 상수 시간 복잡성을 제공하기 위해 필요합니다.
2) begin() + ranges::range_difference_t<const V>(size())과 동등합니다.

매개변수

(없음)

반환값

sentinel 또는 iterator 를 나타내며, slide_view 의 끝을 표현합니다.

예제

#include <iostream>
#include <ranges>
int main()
{
    static constexpr auto source = {'A', 'B', 'C', 'D'};
    for (const auto subrange: source | std::views::slide(3))
    {
        std::cout << "[ ";
        for (auto it = subrange.begin(); it != subrange.end(); ++it)
            std::cout << *it << ' ';
        std::cout << "]\n";
    }
}

출력:

[ A B C ]
[ B C D ]

참고 항목

시작 부분을 가리키는 반복자를 반환합니다
(public member function)
range의 시작 부분을 가리키는 반복자를 반환합니다
(customization point object)
range의 끝을 나타내는 sentinel을 반환합니다
(customization point object)