< cpp‎ | ranges‎ | slide view
Ranges library
Range access
Range conversions

Range primitives

Dangling iterator handling
Range concepts

Range factories
Range adaptors
Range generators
Range adaptor objects
Range adaptor closure objects
Helper items
(until C++23)(C++23)

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

Returns an iterator to the first element of the slide_view.

1) If V models __slide_caches_first, equivalent to:

return iterator<false>(
           ranges::next(ranges::begin(base_), n_ - 1, ranges::end(base_)),

Otherwise, equivalent to: return iterator<false>(ranges::begin(base_), n_);.
If V models __slide_caches_first this function caches the result within the slide_view::cached_begin_ for use on subsequent calls. This is necessary to provide the amortized constant-time complexity required by the range.
2) Equivalent to: return iterator<true>(ranges::begin(base_), n_);.


[edit] Parameters


[edit] Return value

An iterator to the first element of slide_view, which points to the n_-sized subrange of the possibly const-qualified underlying view type – V for overload (1) or const V for overload (2).

[edit] Example

#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

[edit] See also

returns an iterator or a sentinel to the end
(public member function) [edit]
compares a sentinel with an iterator returned from slide_view::begin
(function) [edit]