The array_range class provides a view into an underlying data structure with lower and upper limits. More...
#include <array_range.h>
Public Types | |
using | bounds_type = T * |
using | const_iterator = array_iterator< const T > |
A constant forward iterator. More... | |
using | const_reverse_iterator = array_reverse_iterator< const T > |
A constant forward iterator that reverses the direction. More... | |
using | iterator = array_iterator< T > |
A forward iterator. More... | |
using | reverse_iterator = array_reverse_iterator< T > |
A forward iterator that reverses the direction. More... | |
using | size_type = std::size_t |
using | value_type = T |
Public Member Functions | |
array_range () | |
Default constructor. More... | |
array_range (const T *begin, size_type size, const Predicate &pred=Predicate()) | |
Constructs an array range starting from begin to end [begin, end). More... | |
const_iterator | begin () |
Returns an iterator to the first element of the range. More... | |
const_iterator | begin () const |
Returns a constant iterator to the first element of the range. More... | |
const_iterator | cbegin () const |
Returns a constant iterator to the first element of the range. More... | |
const_iterator | cend () const |
Returns a constant iterator to the element following the last element of the range. More... | |
const_reverse_iterator | crbegin () const |
Returns a constant reverse iterator to the first element of the reversed range. More... | |
const_reverse_iterator | crend () const |
Returns a constant reverse iterator to the element following the last element of the reversed range. More... | |
bool | empty () const |
Checks if the range has no elements, i.e. More... | |
const_iterator | end () |
Returns an iterator to the element following the last element of the range. More... | |
const_iterator | end () const |
Returns a constant iterator to the element following the last element of the range. More... | |
const_reverse_iterator | rbegin () |
Returns a reverse iterator to the first element of the reversed range. More... | |
const_reverse_iterator | rbegin () const |
Returns a constant reverse iterator to the first element of the reversed range. More... | |
const_reverse_iterator | rend () |
Returns a reverse iterator to the element following the last element of the reversed range. More... | |
const_reverse_iterator | rend () const |
Returns a constant reverse iterator to the element following the last element of the reversed range. More... | |
size_t | size () const |
Returns the number of elements in the range. More... | |
Detailed Description
template<typename T, typename Predicate = detail::default_predicate<T>>
class rttr::array_range< T, Predicate >
The array_range class provides a view into an underlying data structure with lower and upper limits.
In order to iterate over the data structure use the returned forward iterators from begin() or rbegin(). To check whether the end of the range has reached use end() or rend(). Using the standard C++ range-based for loop will implicit do all this work.
- Remarks
- When the underlying data structure gets modified while holding a range, its iterators and the range itself will be invalidated.
Member Typedef Documentation
using rttr::array_range< T, Predicate >::bounds_type = T* |
using rttr::array_range< T, Predicate >::const_iterator = array_iterator<const T> |
A constant forward iterator.
using rttr::array_range< T, Predicate >::const_reverse_iterator = array_reverse_iterator<const T> |
A constant forward iterator that reverses the direction.
using rttr::array_range< T, Predicate >::iterator = array_iterator<T> |
A forward iterator.
using rttr::array_range< T, Predicate >::reverse_iterator = array_reverse_iterator<T> |
A forward iterator that reverses the direction.
using rttr::array_range< T, Predicate >::size_type = std::size_t |
using rttr::array_range< T, Predicate >::value_type = T |
Constructor & Destructor Documentation
rttr::array_range< T, Predicate >::array_range | ( | ) |
Default constructor.
Constructs an empty array_range.
rttr::array_range< T, Predicate >::array_range | ( | const T * | begin, |
size_type | size, | ||
const Predicate & | pred = Predicate() |
||
) |
Constructs an array range starting from begin
to end
[begin, end).
- Parameters
-
begin Marks the start of the range. Is included of the range. size The number of elements to include in the range. pred Determines whether an element in the range fulfills the condition of the predicate.
Member Function Documentation
const_iterator rttr::array_range< T, Predicate >::begin | ( | ) |
Returns an iterator to the first element of the range.
- Remarks
- If the range is empty, the returned iterator will be equal to end().
- Returns
- Iterator to the first element.
const_iterator rttr::array_range< T, Predicate >::begin | ( | ) | const |
Returns a constant iterator to the first element of the range.
- Remarks
- If the range is empty, the returned iterator will be equal to end().
- Returns
- Constant iterator to the first element.
const_iterator rttr::array_range< T, Predicate >::cbegin | ( | ) | const |
Returns a constant iterator to the first element of the range.
- Remarks
- If the range is empty, the returned iterator will be equal to end().
- Returns
- Constant iterator to the first element.
const_iterator rttr::array_range< T, Predicate >::cend | ( | ) | const |
Returns a constant iterator to the element following the last element of the range.
- Remarks
- This element acts as placeholder, attempting to access it results in undefined behavior. If the range is empty, the returned iterator will be equal to begin().
- Returns
- Constant iterator to the element following the last element.
const_reverse_iterator rttr::array_range< T, Predicate >::crbegin | ( | ) | const |
Returns a constant reverse iterator to the first element of the reversed range.
It corresponds to the last element of the non-reversed range.
- Remarks
- If the range is empty, the returned iterator will be equal to rend().
- Returns
- Constant reverse iterator to the first element.
const_reverse_iterator rttr::array_range< T, Predicate >::crend | ( | ) | const |
Returns a constant reverse iterator to the element following the last element of the reversed range.
It corresponds to the element preceding the first element of the non-reversed range.
- Remarks
- If the range is empty, the returned iterator will be equal to rbegin().
- Returns
- Constant reverse iterator to the element following the last element.
bool rttr::array_range< T, Predicate >::empty | ( | ) | const |
Checks if the range has no elements, i.e.
- Remarks
- Every element will be checked against the condition of the used predicate. Only when every element doe not fulfill the condition of predicate, the range is declared empty. That means, in order to check for emptiness, the underlying algorithm needs to iterate through the whole range. So don't call it to often. It's better to cache the result in a temporary variable.
- Returns
True
if this range is empty, otherwisefalse
.
const_iterator rttr::array_range< T, Predicate >::end | ( | ) |
Returns an iterator to the element following the last element of the range.
- Remarks
- This element acts as placeholder, attempting to access it results in undefined behavior. If the range is empty, the returned iterator will be equal to begin().
- Returns
- Iterator to the element following the last element.
const_iterator rttr::array_range< T, Predicate >::end | ( | ) | const |
Returns a constant iterator to the element following the last element of the range.
- Remarks
- This element acts as placeholder, attempting to access it results in undefined behavior. If the range is empty, the returned iterator will be equal to begin().
- Returns
- Constant iterator to the element following the last element.
const_reverse_iterator rttr::array_range< T, Predicate >::rbegin | ( | ) |
Returns a reverse iterator to the first element of the reversed range.
It corresponds to the last element of the non-reversed range.
- Remarks
- If the range is empty, the returned iterator will be equal to rend().
- Returns
- Reverse iterator to the first element.
const_reverse_iterator rttr::array_range< T, Predicate >::rbegin | ( | ) | const |
Returns a constant reverse iterator to the first element of the reversed range.
It corresponds to the last element of the non-reversed range.
- Remarks
- If the range is empty, the returned iterator will be equal to rend().
- Returns
- Constant reverse iterator to the first element.
const_reverse_iterator rttr::array_range< T, Predicate >::rend | ( | ) |
Returns a reverse iterator to the element following the last element of the reversed range.
It corresponds to the element preceding the first element of the non-reversed range.
- Remarks
- If the range is empty, the returned iterator will be equal to rbegin().
- Returns
- Reverse iterator to the element following the last element.
const_reverse_iterator rttr::array_range< T, Predicate >::rend | ( | ) | const |
Returns a constant reverse iterator to the element following the last element of the reversed range.
It corresponds to the element preceding the first element of the non-reversed range.
- Remarks
- If the range is empty, the returned iterator will be equal to rbegin().
- Returns
- Constant reverse iterator to the element following the last element.
size_t rttr::array_range< T, Predicate >::size | ( | ) | const |
Returns the number of elements in the range.
- Remarks
- Every element will be checked against the condition of the used predicate. Only elements which fulfill the condition of predicate will be included in the counter. That means, in order to determine the size of the range, the underlying algorithm needs to iterate through the whole range. So don't call it to often. It's better to cache the result in a temporary variable.
- Returns
- The number of elements in the range.
The documentation for this class was generated from the following file: