Spec-Zone.ru › C++

std::ranges::slide_view<V>::end

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)

Возвращает sentinel или итератор, представляющий конец 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, эта функция кэширует результат внутри slide_view::cached_end_ для использования в последующих вызовах. Это необходимо для обеспечения амортизированной сложности, равной константе, требуемой range.
2) Эквивалентно begin() + ranges::range_difference_t<const V>(size()).

Параметры

(нет)

Значение результата

A sentinel или итератор, представляющий конец 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 ]

См. также

begin
(C++23)
возвращает итератор начала
(публичный член-функция)
ranges::begin
(C++20)
возвращает итератор начала диапазона
(объект точки кастомизации)
ranges::end
(C++20)
возвращает sentinel, указывающий на конец диапазона
(объект точки кастомизации)

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/ranges/slide_view/end

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API