std::ranges::slide_view<V>::end
Из ru.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) |
Возвращает страж или итератор, представляющие конец 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()).Параметры
(нет)
Возвращаемое значение
Сентинел
или
итератор
, представляющий конец
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)
|
возвращает итератор на начало диапазона
(customization point object) |
|
(C++20)
|
возвращает страж, указывающий на конец диапазона
(customization point object) |