Spec-Zone.ru › C++

std::ranges::slide_view<V>::begin

constexpr auto begin()
    requires (!(__simple_view<V> && __slide_caches_nothing<const V>));
(1) (с C++23)
constexpr auto begin() const
    requires __slide_caches_nothing<const V>;
(2) (с C++23)

Возвращает итератор на первый элемент slide_view.

1) Если V соответствует __slide_caches_first, эквивалентно:

return iterator<false>(
ranges::begin(base_),
ranges::next(ranges::begin(base_), n_ - 1, ranges::end(base_)),
n_
);
В противном случае, эквивалентно: return iterator<false>(ranges::begin(base_), n_);.

Если V соответствует __slide_caches_first, эта функция кэширует результат внутри slide_view::cached_begin_ для использования в последующих вызовах. Это необходимо для обеспечения амортизированной постоянной сложности, требуемой range.
2) Эквивалентно: return iterator<true>(ranges::begin(base_), n_);.

Параметры

(нет)

Возвращаемое значение

Итератор на первый элемент slide_view, указывающий на поддиапазон размером n_ возможно const-квалифицированного базового типа представления — V для перегрузки (1) или const V для перегрузки (2).

Пример

#include <iostream>
#include <ranges>
#include <string_view>
using namespace std::literals;
 
int main()
{
    static constexpr auto source = {"∀x"sv, "∃y"sv, "ε"sv, "δ"sv};
    auto view{std::ranges::slide_view(source, 2)};
    const auto subrange{*(view.begin())};
    for (std::string_view const s : subrange)
        std::cout << s << ' ';
    std::cout << '\n';
}

Вывод:

∀x ∃y

См. также

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

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

Spec-Zone.ru

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