Dune Core Modules (2.7.1)
A range transforming the values of another range on-the-fly. More...
#include <dune/common/rangeutilities.hh>
Public Types | |
using | const_iterator = Impl::TransformedRangeIterator< RawConstIterator, F > |
Const iterator type. More... | |
using | iterator = Impl::TransformedRangeIterator< RawIterator, F > |
Iterator type. More... | |
using | RawRange = std::remove_reference_t< R > |
Export type of the wrapped untransformed range. More... | |
Public Member Functions | |
template<class RR > | |
constexpr | TransformedRangeView (RR &&rawRange, const F &f) noexcept |
Construct from range and function. | |
constexpr const_iterator | begin () const noexcept |
Obtain a iterator to the first element. More... | |
constexpr const_iterator | end () const noexcept |
Obtain a iterator past the last element. More... | |
template<class Dummy = R, class = void_t<decltype(std::declval<Dummy>().size())>> | |
auto | size () const |
Obtain the size of the range. More... | |
const RawRange & | rawRange () const |
Export the wrapped untransformed range. | |
RawRange & | rawRange () |
Export the wrapped untransformed range. | |
Detailed Description
class Dune::TransformedRangeView< R, F >
A range transforming the values of another range on-the-fly.
This behaves like a range providing begin()
and end()
. The iterators over this range internally iterate over the wrapped range. When dereferencing the iterator, the value is transformed on-the-fly using a given transformation function leaving the underlying range unchanged.
The transformation may either return temorary values or l-value references. In the former case the range behaves like a proxy-container. In the latter case it forwards these references allowing, e.g., to sort a subset of some container by applying a transformation to an index-range for those values.
The iterators of the TransformedRangeView have the same iterator_category as the ones of the wrapped container.
If range is given as r-value, then the returned TransformedRangeView stores it by value, if range is given as (const) l-value, then the TransformedRangeView stores it by (const) reference.
If R is a value type, then the TransformedRangeView stores the wrapped range by value, if R is a reference type, then the TransformedRangeView stores the wrapped range by reference.
- Template Parameters
-
R Underlying range. F Unary function used to transform the values in the underlying range.
Member Typedef Documentation
◆ const_iterator
using Dune::TransformedRangeView< R, F >::const_iterator = Impl::TransformedRangeIterator<RawConstIterator, F> |
Const iterator type.
This inherits the iterator_category of the iterators of the underlying range.
◆ iterator
using Dune::TransformedRangeView< R, F >::iterator = Impl::TransformedRangeIterator<RawIterator, F> |
Iterator type.
This inherits the iterator_category of the iterators of the underlying range.
◆ RawRange
using Dune::TransformedRangeView< R, F >::RawRange = std::remove_reference_t<R> |
Export type of the wrapped untransformed range.
Notice that this will always be the raw type with references removed, even if a reference is stored.
Member Function Documentation
◆ begin()
|
inlineconstexprnoexcept |
Obtain a iterator to the first element.
The life time of the returned iterator is bound to the life time of the range since it only contains a pointer to the transformation function stored in the range.
◆ end()
|
inlineconstexprnoexcept |
Obtain a iterator past the last element.
The life time of the returned iterator is bound to the life time of the range since it only contains a pointer to the transformation function stored in the range.
◆ size()
|
inline |
The documentation for this class was generated from the following file:
- dune/common/rangeutilities.hh