std::ranges::slide_view<V>::end
From cppreference.com
< cpp | ranges | slide view
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 V models
slide-caches-nothing
, return iterator< false > ( ranges::begin (base_) + ranges::range_difference_t <V> (size( ) ), n_) ; - Otherwise, if V models
slide-caches-last
, return iterator< false > ( ranges::prev ( ranges::end (base_), n_ - 1, ranges::begin (base_) ), n_) ; - Otherwise, if V models
common_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) |