std::ranges::slide_view<V>::end
From ko.cppreference.net
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) |
|
|
(C++20)
|
range의 시작 부분을 가리키는 반복자를 반환합니다
(customization point object) |
|
(C++20)
|
range의 끝을 나타내는 sentinel을 반환합니다
(customization point object) |