< cpp‎ | ranges‎ | split 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 /*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 for use on subsequent calls. 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()};

Exposition only data members base_ and cached_begin_ are described here.


[edit] Parameters


[edit] Return value

An iterator.

[edit] Complexity

Amortized O(1).

[edit] Example

#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 (std::string_view word : words)
        std::cout << std::quoted(word) << ' ';
    std::ranges::split_view letters{sentence, std::string_view{""}};
    std::cout << "\nbegin(): " << std::quoted(std::string_view{*letters.begin()})
              << "\nLetters: ";
    for (std::string_view letter : letters)
        std::cout << letter << ' ';
    std::cout << '\n';


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 . .

[edit] See also

returns an iterator or a sentinel to the end
(public member function) [edit]
returns an iterator to the beginning
(public member function of std::ranges::lazy_split_view<V,Pattern>) [edit]
returns an iterator to the beginning of a range
(customization point object)[edit]