The <ranges> header from C++20's standard library. More...
Classes | |
interface | std::ranges::BidirectionalRange |
Specifies requirements of a Range type for which begin returns a type that models std::BidirectionalIterator. More... | |
interface | std::ranges::CommonRange |
Specifies requirements of a Range type for which begin and end return objects of the same type. More... | |
interface | std::ranges::ContiguousRange |
Specifies requirements of a Range type whose elements occupy adjacent locations in memory. More... | |
interface | std::ranges::ForwardRange |
Specifies requirements of a Range type for which begin returns a type that models std::ForwardIterator. More... | |
interface | std::ranges::InputRange |
Specifies requirements of a Range type for which begin returns a type that models std::InputIterator. More... | |
interface | std::ranges::OutputRange |
Specifies requirements of a Range type for which begin returns a type that models std::OutputIterator. More... | |
interface | std::ranges::RandomAccessRange |
Specifies requirements of a Range type for which begin returns a type that models std::RandomAccessIterator. More... | |
interface | std::ranges::Range |
Defines the requirements of a type that allows iteration over its elements by providing a begin iterator and an end sentinel. More... | |
interface | std::ranges::SizedRange |
Specifies the requirements of a Range type that knows its size in constant time with the size function. More... | |
interface | std::ranges::View |
Specifies the requirements of a Range type that has constant time copy, move and assignment operators. More... | |
interface | std::ranges::ViewableRange |
Specifies the requirements of a Range type that is either a std::ranges::View or an lvalue-reference. More... | |
Typedefs | |
using | std::ranges::begin = ::ranges::begin |
Alias for ranges::begin. Returns an iterator to the beginning of a range. | |
using | std::ranges::cbegin = ::ranges::cbegin |
Alias for ranges::cbegin. Returns an iterator to the beginning of a range. | |
using | std::ranges::cend = ::ranges::cend |
Alias for ranges::cend. Returns an iterator to the end of a range. | |
using | std::ranges::data = ::ranges::data |
Alias for ranges::data. Returns a pointer the block of data of a ContiguousRange. | |
using | std::ranges::empty = ::ranges::empty |
Alias for ranges::empty. Checks whether a range is empty. | |
using | std::ranges::end = ::ranges::end |
Alias for ranges::end. Returns an iterator to the end of a range. | |
template<typename value_type > | |
using | std::ranges::istream_view = ::ranges::istream_view< value_type > |
A view over an input stream. More... | |
using | std::ranges::iterator_t = ::ranges::iterator_t |
Alias for ranges::iterator_t. Obtains the iterator type of a range. | |
using | std::ranges::sentinel_t = ::ranges::sentinel_t |
Alias for ranges::sentinel_t. Obtains the sentinel type of a range. | |
using | std::ranges::size = ::ranges::size |
Alias for ranges::size. Obtains the size of a range whose size can be calculated in constant time. | |
template<std::Iterator it_t, std::Sentinel< it_t > sen_t, subrange_kind k = std::SizedSentinel<sen_t, it_t> ? subrange_kind::sized : subrange_kind::unsized> | |
using | std::ranges::subrange = ::ranges::subrange< it_t, sen_t, k > |
Create a view from a pair of iterator and sentinel. More... | |
using | std::ranges::to = ::ranges::_to_::to |
Alias for ranges::to. | |
template<typename urng_t > | |
using | std::ranges::view_interface = ::ranges::view_interface< urng_t > |
Alias for ranges::view_interface. | |
Variables | |
constexpr auto | std::ranges::view::all |
A range adaptor that forwards views and "view-wraps" containers (you will likely not need to use this unless defining a new view). More... | |
constexpr auto | std::ranges::view::common |
A range adaptor that makes any range model std::ranges::CommonRange (at the expense of some performance). More... | |
constexpr auto | std::ranges::view::drop |
A range adaptor that returns all elements from the underlying range after count . More... | |
constexpr auto | std::ranges::view::drop_while |
A range adaptor that drops elements from the underlying range as long as the functor evaluates to true (and returns the rest). More... | |
constexpr auto | std::ranges::view::filter |
A range adaptor that takes a predicate and returns a view of the elements that satisfy the predicate. More... | |
constexpr auto | std::ranges::view::iota |
Generates a sequence of elements by repeatedly incrementing an initial value. More... | |
constexpr auto | std::ranges::view::join |
Flattens a View of ranges into a View. More... | |
constexpr auto | std::ranges::view::reverse |
A range adaptor that presents the underlying range in reverse order. More... | |
constexpr auto | std::ranges::view::single |
Given a value, produces a view that contains exactly one element. More... | |
constexpr auto | std::ranges::view::split |
Takes a View and a delimiter, and splits the View into subranges on the delimiter. More... | |
constexpr auto | std::ranges::view::take |
A range adaptor that returns the first size elements from the underlying range (or less if the underlying range is shorter). More... | |
constexpr auto | std::ranges::view::take_while |
A range adaptor that returns elements from the underlying range until the functor evaluates to false (or the end of the underlying range is reached). More... | |
constexpr auto | std::ranges::view::transform |
A range adaptor that takes a invocable and returns a view of the elements with the invocable applied. More... | |
constexpr auto | std::ranges::view::zip |
A range adaptor that transforms a tuple of range into a range of tuples. More... | |
The <ranges> header from C++20's standard library.
using std::ranges::istream_view = typedef ::ranges::istream_view<value_type> |
A view over an input stream.
value_type | The value_type read from the stream. |
[in] | istr | The object of type std::istream. |
This view is source-only, it can only be at the beginning of a pipe of range transformations.
range concepts and reference_t | rrng_t (returned range type) |
---|---|
std::ranges::InputRange | guaranteed |
std::ranges::ForwardRange | |
std::ranges::BidirectionalRange | |
std::ranges::RandomAccessRange | |
std::ranges::ContiguousRange | |
std::ranges::ViewableRange | guaranteed |
std::ranges::View | guaranteed |
std::ranges::SizedRange | |
std::ranges::CommonRange | |
std::ranges::OutputRange | |
seqan3::ConstIterableRange | |
seqan3::reference_t | value_type & |
See the view submodule documentation for detailed descriptions of the view properties.
using std::ranges::subrange = typedef ::ranges::subrange<it_t, sen_t, k> |
Create a view from a pair of iterator and sentinel.
it_t | Type of the iterator; must model std::Iterator. |
sen_t | Type of the sentinel; must model std::Sentinel with it_t. |
[in] | it | The iterator on the underlying range. |
[in] | sen | The sentinel on the underlying range |
This view is source-only, it can only be at the beginning of a pipe of range transformations.
range concepts and reference_t | rrng_t (returned range type) |
---|---|
std::ranges::InputRange | preserved |
std::ranges::ForwardRange | preserved |
std::ranges::BidirectionalRange | preserved |
std::ranges::RandomAccessRange | preserved |
std::ranges::ContiguousRange | preserved |
std::ranges::ViewableRange | guaranteed |
std::ranges::View | guaranteed |
std::ranges::SizedRange | preserved |
std::ranges::CommonRange | preserved |
std::ranges::OutputRange | preserved |
seqan3::ConstIterableRange | preserved |
seqan3::reference_t | seqan3::value_type_t<it_t> |
Preservation in this table refers to the properties of the iterator/sentinel pair.
See the view submodule documentation for detailed descriptions of the view properties.
This entity will likely be part of C++20 or C++23. It's API will track current proposals and not be stable within SeqAn3 releases. It is implemented via the range-v3 library or the standard library (if available). Should it become clear that it will not become part of a future standard, it will migrate to a regular SeqAn3 module.
|
inline |
A range adaptor that forwards views and "view-wraps" containers (you will likely not need to use this unless defining a new view).
urng_t | The type of the range being processed. See below for requirements. |
[in] | urange | The range being processed. |
This view is source-only, it can only be at the beginning of a pipe of range transformations. The "underlying range" refers to the mandatory parameter of this adaptor, not a previous range in a pipe.
range concepts and reference_t | urng_t (underlying range type) | rrng_t (returned range type) |
---|---|---|
std::ranges::InputRange | preserved | |
std::ranges::ForwardRange | preserved | |
std::ranges::BidirectionalRange | preserved | |
std::ranges::RandomAccessRange | preserved | |
std::ranges::ContiguousRange | preserved | |
std::ranges::ViewableRange | required | guaranteed |
std::ranges::View | guaranteed | |
std::ranges::SizedRange | preserved | |
std::ranges::CommonRange | preserved | |
std::ranges::OutputRange | preserved | |
seqan3::ConstIterableRange | preserved | |
seqan3::reference_t | seqan3::reference_t<urng_t> |
See the view submodule documentation for detailed descriptions of the view properties.
|
inline |
A range adaptor that makes any range model std::ranges::CommonRange (at the expense of some performance).
urng_t | The type of the range being processed. See below for requirements. [template parameter is omitted in pipe notation] |
[in] | urange | The range being processed. [parameter is omitted in pipe notation] |
range concepts and reference_t | urng_t (underlying range type) | rrng_t (returned range type) |
---|---|---|
std::ranges::InputRange | required | preserved |
std::ranges::ForwardRange | preserved | |
std::ranges::BidirectionalRange | lost | |
std::ranges::RandomAccessRange | lost | |
std::ranges::ContiguousRange | lost | |
std::ranges::ViewableRange | required | guaranteed |
std::ranges::View | guaranteed | |
std::ranges::SizedRange | preserved | |
std::ranges::CommonRange | guarenteed | |
std::ranges::OutputRange | preserved | |
seqan3::ConstIterableRange | preserved | |
seqan3::reference_t | seqan3::reference_t<urng_t> |
See the view submodule documentation for detailed descriptions of the view properties.
|
inline |
A range adaptor that returns all elements from the underlying range after count
.
urng_t | The type of the range being processed. See below for requirements. [template parameter is omitted in pipe notation] |
[in] | urange | The range being processed. [parameter is omitted in pipe notation] |
[in] | count | The number of elements to skip. |
size
elements of the underlying range.range concepts and reference_t | urng_t (underlying range type) | rrng_t (returned range type) |
---|---|---|
std::ranges::InputRange | required | preserved |
std::ranges::ForwardRange | preserved | |
std::ranges::BidirectionalRange | preserved | |
std::ranges::RandomAccessRange | preserved | |
std::ranges::ContiguousRange | preserved | |
std::ranges::ViewableRange | required | guaranteed |
std::ranges::View | guaranteed | |
std::ranges::SizedRange | lost | |
std::ranges::CommonRange | lost | |
std::ranges::OutputRange | preserved | |
seqan3::ConstIterableRange | preserved | |
seqan3::reference_t | seqan3::reference_t<urng_t> |
See the view submodule documentation for detailed descriptions of the view properties.
|
inline |
A range adaptor that drops elements from the underlying range as long as the functor evaluates to true (and returns the rest).
urng_t | The type of the range being processed. See below for requirements. [template parameter is omitted in pipe notation] |
fun_t | The type of the functor; must model std::IndirectUnaryPredicate with std::ranges::iterator_t<urng_t>. |
[in] | urange | The range being processed. [parameter is omitted in pipe notation] |
[in] | fun | The functor. |
range concepts and reference_t | urng_t (underlying range type) | rrng_t (returned range type) |
---|---|---|
std::ranges::InputRange | required | preserved |
std::ranges::ForwardRange | depends on functor (see below) | |
std::ranges::BidirectionalRange | depends on functor (see below) | |
std::ranges::RandomAccessRange | depends on functor (see below) | |
std::ranges::ContiguousRange | depends on functor (see below) | |
std::ranges::ViewableRange | required | guaranteed |
std::ranges::View | guaranteed | |
std::ranges::SizedRange | lost | |
std::ranges::CommonRange | lost | |
std::ranges::OutputRange | preserved | |
seqan3::ConstIterableRange | depends on functor (see below) | |
seqan3::reference_t | seqan3::reference_t<urng_t> |
See the view submodule documentation for detailed descriptions of the view properties.
This view only preserves certain concepts if and only if the specified functor also models std::IndirectRegularUnaryInvocable<fun_t, reference_t<urng_t>, i.e. applying the functor doesn't change the functor.
|
inline |
A range adaptor that takes a predicate and returns a view of the elements that satisfy the predicate.
urng_t | The type of the range being processed. See below for requirements. [template parameter is omitted in pipe notation] |
predicate_t | The type of the predicate, must model std::Predicate. |
[in] | urange | The range being processed. [parameter is omitted in pipe notation] |
[in,out] | predicate | The predicate. |
range concepts and reference_t | urng_t (underlying range type) | rrng_t (returned range type) |
---|---|---|
std::ranges::InputRange | required | preserved |
std::ranges::ForwardRange | preserved | |
std::ranges::BidirectionalRange | preserved | |
std::ranges::RandomAccessRange | lost | |
std::ranges::ContiguousRange | lost | |
std::ranges::ViewableRange | required | guaranteed |
std::ranges::View | guaranteed | |
std::ranges::SizedRange | lost | |
std::ranges::CommonRange | lost | |
std::ranges::OutputRange | preserved | |
seqan3::ConstIterableRange | lost | |
seqan3::reference_t | seqan3::reference_t<urng_t> |
See the view submodule documentation for detailed descriptions of the view properties.
|
inline |
Generates a sequence of elements by repeatedly incrementing an initial value.
init_t | Type of the initial value, must be incrementable. |
bound_t | Type of the bound value (optional); must be weakly equality comparable with init_t. |
[in] | init | Initial value (the first value returned). |
[in] | bound | Bound value (the last value returned); optional, infinite if not provided. |
This view is source-only, it can only be at the beginning of a pipe of range transformations.
range concepts and reference_t | rrng_t (returned range type) |
---|---|
std::ranges::InputRange | guaranteed |
std::ranges::ForwardRange | if std::Incrementable<init_t> |
std::ranges::BidirectionalRange | if init_t provides operator-- |
std::ranges::RandomAccessRange | if init_t provides + , - , += and -= with integral |
std::ranges::ContiguousRange | |
std::ranges::ViewableRange | guaranteed |
std::ranges::View | guaranteed |
std::ranges::SizedRange | if bound is provided and bound - init is valid and in O(1) |
std::ranges::CommonRange | |
std::ranges::OutputRange | |
seqan3::ConstIterableRange | guaranteed |
seqan3::reference_t | init_t |
See the view submodule documentation for detailed descriptions of the view properties.
|
inline |
Flattens a View of ranges into a View.
init_t | Type of the initial value, must be incrementable. |
bound_t | Type of the bound value (optional); must be weakly equality comparable with init_t. |
[in] | init | Initial value (the first value returned). |
[in] | bound | Bound value (the last value returned); optional, infinite if not provided. |
range concepts and reference_t | urng_t (underlying range type) | rrng_t (returned range type) |
---|---|---|
std::ranges::InputRange | required | preserved |
std::ranges::ForwardRange | preserved ¹ | |
std::ranges::BidirectionalRange | preserved ¹ | |
std::ranges::RandomAccessRange | lost | |
std::ranges::ContiguousRange | lost | |
std::ranges::ViewableRange | required | guaranteed |
std::ranges::View | guaranteed | |
std::ranges::SizedRange | lost | |
std::ranges::CommonRange | preserved ¹² | |
std::ranges::OutputRange | preserved ¹ | |
seqan3::ConstIterableRange | preserved ¹² | |
seqan3::reference_t | std::ranges::InputRange && std::ranges::ViewableRange | seqan3::reference_t<seqan3::reference_t<urng_t>> |
¹ This depends on urng_t
and seqan3::reference_t<urng_t>
.
² This also requires that seqan3::reference_t<urng_t>
is an lvalue reference.
See the view submodule documentation for detailed descriptions of the view properties.
|
inline |
A range adaptor that presents the underlying range in reverse order.
urng_t | The type of the range being processed. See below for requirements. [template parameter is omitted in pipe notation] |
[in] | urange | The range being processed. [parameter is omitted in pipe notation] |
range concepts and reference_t | urng_t (underlying range type) | rrng_t (returned range type) |
---|---|---|
std::ranges::InputRange | required | preserved |
std::ranges::ForwardRange | required | preserved |
std::ranges::BidirectionalRange | required | preserved |
std::ranges::RandomAccessRange | preserved | |
std::ranges::ContiguousRange | lost | |
std::ranges::ViewableRange | required | guaranteed |
std::ranges::View | guaranteed | |
std::ranges::SizedRange | preserved | |
std::ranges::CommonRange | preserved | |
std::ranges::OutputRange | lost | |
seqan3::ConstIterableRange | preserved if std::ranges::CommonRange<urng_t> | |
seqan3::reference_t | seqan3::reference_t<urng_t> |
See the view submodule documentation for detailed descriptions of the view properties.
|
inline |
Given a value, produces a view that contains exactly one element.
value_t | Type of the value; must model std::CopyConstructible. |
[in] | value | The value to create the view for. |
This view is source-only, it can only be at the beginning of a pipe of range transformations.
range concepts and reference_t | rrng_t (returned range type) |
---|---|
std::ranges::InputRange | guaranteed |
std::ranges::ForwardRange | guaranteed |
std::ranges::BidirectionalRange | guaranteed |
std::ranges::RandomAccessRange | guaranteed |
std::ranges::ContiguousRange | guaranteed |
std::ranges::ViewableRange | guaranteed |
std::ranges::View | guaranteed |
std::ranges::SizedRange | guaranteed |
std::ranges::CommonRange | guaranteed |
std::ranges::OutputRange | guaranteed |
seqan3::ConstIterableRange | guaranteed |
seqan3::reference_t | value_t & |
See the view submodule documentation for detailed descriptions of the view properties.
|
inline |
Takes a View and a delimiter, and splits the View into subranges on the delimiter.
urng_t | The type of the range being processed. See below for requirements. [template parameter is omitted in pipe notation] |
delimiter_t | Type of the split pattern; most model std::ranges::ForwardRange. |
[in] | urange | The range being processed. [parameter is omitted in pipe notation] |
[in] | delimiter | The target size of the view. |
size
elements of the underlying range.range concepts and reference_t | urng_t (underlying range type) | rrng_t (returned range type) | seqan3::reference_t<rrng_t> |
---|---|---|---|
std::ranges::InputRange | required | preserved | preserved |
std::ranges::ForwardRange | preserved | preserved | |
std::ranges::BidirectionalRange | lost | lost | |
std::ranges::RandomAccessRange | lost | lost | |
std::ranges::ContiguousRange | lost | lost | |
std::ranges::ViewableRange | required | guaranteed | guaranteed |
std::ranges::View | guaranteed | guaranteed | |
std::ranges::SizedRange | lost | lost | |
std::ranges::CommonRange | lost | lost | |
std::ranges::OutputRange | lost | lost | |
seqan3::ConstIterableRange | preserved | preserved | |
seqan3::reference_t | see to the right | seqan3::reference_t<urng_t> |
See the view submodule documentation for detailed descriptions of the view properties.
|
inline |
A range adaptor that returns the first size
elements from the underlying range (or less if the underlying range is shorter).
urng_t | The type of the range being processed. See below for requirements. [template parameter is omitted in pipe notation] |
[in] | urange | The range being processed. [parameter is omitted in pipe notation] |
[in] | size | The target size of the view. |
size
elements of the underlying range.range concepts and reference_t | urng_t (underlying range type) | rrng_t (returned range type) |
---|---|---|
std::ranges::InputRange | required | preserved |
std::ranges::ForwardRange | preserved | |
std::ranges::BidirectionalRange | preserved | |
std::ranges::RandomAccessRange | preserved | |
std::ranges::ContiguousRange | preserved | |
std::ranges::ViewableRange | required | guaranteed |
std::ranges::View | guaranteed | |
std::ranges::SizedRange | lost | |
std::ranges::CommonRange | lost | |
std::ranges::OutputRange | preserved | |
seqan3::ConstIterableRange | preserved | |
seqan3::reference_t | seqan3::reference_t<urng_t> |
See the view submodule documentation for detailed descriptions of the view properties.
|
inline |
A range adaptor that returns elements from the underlying range until the functor evaluates to false (or the end of the underlying range is reached).
urng_t | The type of the range being processed. See below for requirements. [template parameter is omitted in pipe notation] |
fun_t | The type of the functor; must model std::IndirectUnaryPredicate with std::ranges::iterator_t<urng_t>. |
[in] | urange | The range being processed. [parameter is omitted in pipe notation] |
[in] | fun | The functor. |
range concepts and reference_t | urng_t (underlying range type) | rrng_t (returned range type) |
---|---|---|
std::ranges::InputRange | required | preserved |
std::ranges::ForwardRange | depends on functor (see below) | |
std::ranges::BidirectionalRange | depends on functor (see below) | |
std::ranges::RandomAccessRange | depends on functor (see below) | |
std::ranges::ContiguousRange | depends on functor (see below) | |
std::ranges::ViewableRange | required | guaranteed |
std::ranges::View | guaranteed | |
std::ranges::SizedRange | lost | |
std::ranges::CommonRange | lost | |
std::ranges::OutputRange | preserved | |
seqan3::ConstIterableRange | depends on functor (see below) | |
seqan3::reference_t | seqan3::reference_t<urng_t> |
See the view submodule documentation for detailed descriptions of the view properties.
This view only preserves certain concepts if and only if the specified functor also models std::IndirectRegularUnaryInvocable<fun_t, reference_t<urng_t>, i.e. applying the functor doesn't change the functor.
|
inline |
A range adaptor that takes a invocable and returns a view of the elements with the invocable applied.
urng_t | The type of the range being processed. See below for requirements. [template parameter is omitted in pipe notation] |
invocable_t | The type of the invocable, must model std::Invocable. |
[in] | urange | The range being processed. [parameter is omitted in pipe notation] |
[in,out] | invocable | The invocable (usually a lambda function). |
range concepts and reference_t | urng_t (underlying range type) | rrng_t (returned range type) |
---|---|---|
std::ranges::InputRange | required | preserved |
std::ranges::ForwardRange | preserved | |
std::ranges::BidirectionalRange | preserved | |
std::ranges::RandomAccessRange | preserved | |
std::ranges::ContiguousRange | lost | |
std::ranges::ViewableRange | required | guaranteed |
std::ranges::View | guaranteed | |
std::ranges::SizedRange | preserved | |
std::ranges::CommonRange | preserved | |
std::ranges::OutputRange | lost | |
seqan3::ConstIterableRange | preserved | |
seqan3::reference_t | decltype(invocable(seqan3::reference_t<urng_t>{})) |
See the view submodule documentation for detailed descriptions of the view properties.
|
inline |
A range adaptor that transforms a tuple of range into a range of tuples.
urng_ts | The types of the ranges being processed. See below for requirements. |
[in] | uranges | The ranges being processed. |
This view is source-only, it can only be at the beginning of a pipe of range transformations. The "underlying ranges" refer to the mandatory parameters of this adaptor, not a previous range in a pipe.
range concepts and reference_t | urng_ts (underlying ranges) | rrng_t (returned range type) |
---|---|---|
std::ranges::InputRange | required | preserved |
std::ranges::ForwardRange | preserved | |
std::ranges::BidirectionalRange | preserved | |
std::ranges::RandomAccessRange | preserved | |
std::ranges::ContiguousRange | lost | |
std::ranges::ViewableRange | required | guaranteed |
std::ranges::View | guaranteed | |
std::ranges::SizedRange | preserved | |
std::ranges::CommonRange | lost | |
std::ranges::OutputRange | lost | |
seqan3::ConstIterableRange | preserved | |
seqan3::reference_t | std::tuple<std::reference_t<urng_ts...>> |
The guarantees for the returned range type only hold if the respective requirements are met by all underlying ranges.
See the view submodule documentation for detailed descriptions of the view properties.