# std::ranges::split_view<V,Pattern>::begin

From cppreference.com
< cpp‎ | ranges‎ | split view

constexpr /*iterator*/ begin(); |  | (since C++20)

Returns an iterator to the first found subrange.

In order to provide the amortized constant time complexity required by the `range` concept, this function caches the result within the `split_view` (by means of `cached_begin_` member) for use on subsequent calls.

Let `base_` be the underlying data member. Equivalent to:

    constexpr /*iterator*/ begin()
    {
        if (!cached_begin_.has_value())
            cached_begin_ = this->find_next(ranges::begin(base_));
        return {*this, ranges::begin(base_), cached_begin_.value()};
    }

### Return value

An iterator.

### Complexity

Amortized \(\scriptsize \mathcal{O}(1)\)O(1).

### Example

Run this code

    #include <iomanip>
    #include <iostream>
    #include <ranges>
    #include <string_view>

    int main()
    {
        constexpr std::string_view sentence{"Keep..moving..forward.."};
        constexpr std::string_view delim{".."};
        std::ranges::split_view words{sentence, delim};

        std::cout << "begin(): " << std::quoted(std::string_view{*words.begin()})
                  << "\nSubstrings: ";
        for (auto word : words)
            std::cout << std::quoted(std::string_view(word)) << ' ';

        std::ranges::split_view letters{sentence, std::string_view{""}};
        std::cout << "\nbegin(): " << std::quoted(std::string_view{*letters.begin()})
                  << "\nLetters: ";
        for (auto letter : letters)
            std::cout << std::string_view(letter) << ' ';
        std::cout << '\n';
    }

Output:

    begin(): "Keep"
    Substrings: "Keep" "moving" "forward" ""
    begin(): "K"
    Letters: K e e p . . m o v i n g . . f o r w a r d . .

### See also

end | returns an iterator or a sentinel to the end (public member function)
begin | returns an iterator to the beginning (public member function of `std::ranges::lazy_split_view<V,Pattern>`)
ranges::begin (C++20) | returns an iterator to the beginning of a range (customization point object)

Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/ranges/split_view/begin&oldid=179886"