Creating your own range view
The C++20 ranges library simplifies the handling of ranges of elements. The 16 range adaptors (views) defined in the library provide useful operations, as seen in the previous recipe. However, you can create your own view that can be used together with the standard ones. In this recipe, you will learn how to do that. We will create a view called trim
that, given a range and a unary predicate, returns a new range without the front and back elements that satisfy the predicate.
Getting ready
In this recipe, we will use the same namespace aliases used in the previous one, with rg
as an alias for std::ranges
and rv
as an alias for std::ranges::views
.
How to do it...
To create a view, do the following:
- Create a class template, called
trim_view
, derived fromstd::ranges::view_interface
:template<rg::input_range R, typename P> requires rg::view<R> class trim_view : public rg::view_interface<trim_view<...