std::ranges::views::split, std::ranges::split_view
Defined in header <ranges>
|
||
template< ranges::forward_range V, ranges::forward_range Pattern > requires ranges::view<V> && ranges::view<Pattern> && |
(1) | (since C++20) |
namespace views { inline constexpr /*unspecified*/ split = /*unspecified*/; |
(2) | (since C++20) |
Call signature |
||
template< ranges::viewable_range R, class Pattern > requires /* see below */ |
||
template< class Pattern > constexpr /*range adaptor closure*/ split( Pattern&& pattern ); |
||
split_view
models the concepts forward_range
, and common_range
when the underlying view
V
models respective concepts.
The inner range (ranges::range_reference_t<split_view>) is a ranges::subrange<ranges::iterator_t<V>>, which models common_range
, models sized_range
when ranges::iterator_t<V> models std::sized_sentinel_for<ranges::iterator_t<V>>, and models contiguous_range
, random_access_range
, bidirectional_range
, and forward_range
when V
models respective concepts.
Expression-equivalent
Expression e is expression-equivalent to expression f, if e and f have the same effects, either are both potentially-throwing or are both not potentially-throwing (i.e. noexcept(e) == noexcept(f)), and either are both constant subexpressions or are both not constant subexpressions.
Data members
Typical implementations of split_view
hold three non-static data members:
- the underlying
view
of typeV
(shown here asbase_
for exposition only), and - the pattern (shown here as
pattern_
for exposition only) that is used as a delimiter to split the underlyingview
. - an object equivalent to std::optional<ranges::subrange<ranges::iterator_t<V>>> (shown here as
cached_begin_
for exposition only) that caches the result of a first call tobegin()
.
Member functions
(C++20) |
constructs a split_view (public member function) |
(C++20) |
returns a copy of the underlying (adapted) view (public member function) |
(C++20) |
returns an iterator to the beginning (public member function) |
(C++20) |
returns an iterator or a sentinel to the end (public member function) |
(C++20) |
searches for the next occurrence of the pattern (exposition-only member function) |
Inherited from std::ranges::view_interface | |
(C++20) |
Returns whether the derived view is empty. Provided if it satisfies forward_range . (public member function of std::ranges::view_interface<D> ) |
(C++20) |
Returns whether the derived view is not empty. Provided if ranges::empty is applicable to it. (public member function of std::ranges::view_interface<D> ) |
(C++20) |
Returns the first element in the derived view. Provided if it satisfies forward_range . (public member function of std::ranges::view_interface<D> ) |
Nested classes
(C++20) |
the iterator type (exposition-only member class) |
(C++20) |
the sentinel type (exposition-only member class) |
Deduction guides
Notes
Example
A link to check the example: wandbox
#include <iostream> #include <iomanip> #include <ranges> #include <string_view> int main() { constexpr std::string_view words{"Hello-_-C++-_-20-_-!"}; constexpr std::string_view delim{"-_-"}; for (const auto word : std::views::split(words, delim)) { std::cout << std::quoted(std::string_view(word.begin(), word.end())) << ' '; } }
Output:
"Hello" "C++" "20" "!"
See also
a view over the subranges obtained from splitting another view using a delimiter (class template) (range adaptor object) | |
(C++20) |
a view consisting of the sequence obtained from flattening a view of range s (class template) (range adaptor object) |