std::ranges::slide_view<V>::end
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) |
Возвращает сентинел или итератор, представляющий конец slide_view.
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()).Параметры
(нет)
Возвращаемое значение
Сентинел или итератор, представляющий конец 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 ]
См. также
| возвращает итератор, указывающий на начало (открытая функция-член) |
|
|
(C++20) | возвращает итератор, указывающий на начало диапазона (объект точки настройки) |
|
(C++20) | возвращает сентинел, обозначающий конец диапазона (объект точки настройки) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/ranges/slide_view/end