std::ranges::slide_view<V>::end
From cppreference.com
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.
1) Let
base_ and n_ be the underlying data members. Equivalent to:
- If
Vmodelsslide-caches-nothing,return iterator<false>(ranges::begin(base_) + ranges::range_difference_t<V>(size()), n_);. - Otherwise, if
Vmodelsslide-caches-last,return iterator<false>(ranges::prev(ranges::end(base_), n_ - 1, ranges::begin(base_)), n_);. - Otherwise, if
Vmodelscommon_range,return iterator<false>(ranges::end(base_), ranges::end(base_), n_);. - Otherwise,
return sentinel(ranges::end(base_));.
If
V models slide-caches-last, this function caches the result within the cached_end_ for use on subsequent calls. This is necessary to provide the amortized constant-time complexity required by the range.2) Equivalent to
begin() + ranges::range_difference_t<const V>(size()).Parameters
(none)
Return value
A sentinel or an iterator representing the end of the slide_view.
Example
Run this code
#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 ]
See also
| 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) |