constexpr auto end() requires (!(__simple_view<V> && __slide_caches_nothing<const V>)); | (1) | (since C++23) |
constexpr auto end() const requires __slide_caches_nothing<const V>; | (2) | (since C++23) |
Returns a sentinel or an iterator representing the end of the slide_view
.
base_
and n_
be the underlying data members. Equivalent to: V
models __slide_caches_nothing
, return iterator<false>(ranges::begin(base_) + ranges::range_difference_t<V>(size()), n_);
. V
models __slide_caches_last
, return iterator<false>(ranges::prev(ranges::end(base_), n_ - 1, ranges::begin(base_)), n_);
. V
models common_range
, return iterator<false>(ranges::end(base_), ranges::end(base_), n_);
. return sentinel(ranges::end(base_));
.V
models __slide_caches_last
, this function caches the result within the slide_view::cached_end_
for use on subsequent calls. This is necessary to provide the amortized constant-time complexity required by the range
.begin() + ranges::range_difference_t<const V>(size())
.(none).
A sentinel or an iterator representing the end of the slide_view
.
A link to test: Compiler Explorer.
#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"; } }
Output:
[ A B C ] [ B C D ]
(C++23) | returns an iterator to the beginning (public member function) |
(C++20) | returns an iterator to the beginning of a range (customization point object) |
(C++20) | returns a sentinel indicating the end of a range (customization point object) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/ranges/slide_view/end