std::ranges::split_view<V,Pattern>::begin - cppreference.com

From cppreference.com

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 O(1).

Example

Run this code

#include<iomanip>#include<iostream>#include<ranges>#include<string_view>intmain(){constexprstd::string_viewsentence{"Keep..moving..forward.."};constexprstd::string_viewdelim{".."};std::ranges::split_viewwords{sentence,delim};std::cout<<"begin(): "<<std::quoted(std::string_view{*words.begin()})<<"\nSubstrings: ";for(autoword:words)std::cout<<std::quoted(std::string_view(word))<<' ';std::ranges::split_viewletters{sentence,std::string_view{""}};std::cout<<"\nbegin(): "<<std::quoted(std::string_view{*letters.begin()})<<"\nLetters: ";for(autoletter: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

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]

(C++20)

returns an iterator to the beginning of a range
(customization point object)

[edit]