ACTS
Experiment-independent tracking
Loading...
Searching...
No Matches
detray::ranges::pick_view< range_itr_t, sequence_itr_t > Class Template Reference

Range adaptor that indexes the elements of a range using another index range. More...

#include <detray/utils/ranges/pick.hpp>

Inheritance diagram for detray::ranges::pick_view< range_itr_t, sequence_itr_t >:
[legend]
Collaboration diagram for detray::ranges::pick_view< range_itr_t, sequence_itr_t >:
[legend]

Public Types

using iterator_t = iterator
 Iterator yielding each selected index and its corresponding element.

Public Member Functions

constexpr pick_view ()=default
 Default constructor.
template<detray::ranges::range range_t, detray::ranges::range sequence_t>
constexpr pick_view (range_t &&range, sequence_t &&seq)
 Select elements of range using the indices in seq.
constexpr auto back () noexcept
constexpr auto begin () -> iterator
constexpr auto begin () const -> iterator
constexpr auto data () -> typename iterator_t::value_type *
constexpr auto data () const -> const typename iterator_t::value_type *
constexpr auto end () -> iterator
constexpr auto front () noexcept
constexpr auto operator[] (const dindex i) const
 Return the selected index and element at position i.
constexpr auto size () const noexcept
Public Member Functions inherited from detray::ranges::view_interface< pick_view< range_itr_t, sequence_itr_t > >
constexpr decltype(auto) back () const
 Return a reference to the last element.
constexpr auto data () const
 Return a pointer to the first element, or null for an empty view.
constexpr auto empty () const -> bool
 Check whether the view contains no elements.
constexpr decltype(auto) front () const
 Return a reference to the first element.
constexpr operator bool () const
 Test whether the view contains at least one element.
constexpr decltype(auto) operator[] (const dindex i) const
 Subscript operator that takes detray dindex.
constexpr auto size () const
 Return the number of elements in the view.

Detailed Description

template<std::input_iterator range_itr_t, std::input_iterator sequence_itr_t>
class detray::ranges::pick_view< range_itr_t, sequence_itr_t >

Range adaptor that indexes the elements of a range using another index range.

Template Parameters
range_itr_tthe iterator type of the enumerated range
sequence_itr_trange of indices.
Note
Does not take ownership of the range it operates on. Its lifetime needs to be guaranteed throughout iteration or between iterations with the same enumerate instance.
Is not fit for lazy evaluation.

Constructor & Destructor Documentation

◆ pick_view()

template<std::input_iterator range_itr_t, std::input_iterator sequence_itr_t>
template<detray::ranges::range range_t, detray::ranges::range sequence_t>
detray::ranges::pick_view< range_itr_t, sequence_itr_t >::pick_view ( range_t && range,
sequence_t && seq )
constexpr

Select elements of range using the indices in seq.

Parameters
rangerange from which elements are selected
seqindices selecting elements from the range

Member Function Documentation

◆ back()

template<std::input_iterator range_itr_t, std::input_iterator sequence_itr_t>
auto detray::ranges::pick_view< range_itr_t, sequence_itr_t >::back ( )
constexprnoexcept
Returns
access to the last element value in the range, including the corresponding index.

◆ begin() [1/2]

template<std::input_iterator range_itr_t, std::input_iterator sequence_itr_t>
auto detray::ranges::pick_view< range_itr_t, sequence_itr_t >::begin ( ) ->iterator
constexpr
Returns
start position of range on container.

◆ begin() [2/2]

template<std::input_iterator range_itr_t, std::input_iterator sequence_itr_t>
auto detray::ranges::pick_view< range_itr_t, sequence_itr_t >::begin ( ) const->iterator
constexpr
Returns
start position of range on container.

◆ data() [1/2]

template<std::input_iterator range_itr_t, std::input_iterator sequence_itr_t>
auto detray::ranges::pick_view< range_itr_t, sequence_itr_t >::data ( ) ->typenameiterator_t::value_type *
constexpr
Returns
a pointer to the beginning of the data of the first underlying range - non-const

◆ data() [2/2]

template<std::input_iterator range_itr_t, std::input_iterator sequence_itr_t>
auto detray::ranges::pick_view< range_itr_t, sequence_itr_t >::data ( ) const->consttypenameiterator_t::value_type *
constexpr
Returns
a pointer to the beginning of the data of the first underlying range - const

◆ end()

template<std::input_iterator range_itr_t, std::input_iterator sequence_itr_t>
auto detray::ranges::pick_view< range_itr_t, sequence_itr_t >::end ( ) ->iterator
constexpr
Returns
sentinel of a sequence.

◆ front()

template<std::input_iterator range_itr_t, std::input_iterator sequence_itr_t>
auto detray::ranges::pick_view< range_itr_t, sequence_itr_t >::front ( )
constexprnoexcept
Returns
access to the first element value in the range, including the corresponding index.

◆ operator[]()

template<std::input_iterator range_itr_t, std::input_iterator sequence_itr_t>
auto detray::ranges::pick_view< range_itr_t, sequence_itr_t >::operator[] ( const dindex i) const
constexpr

Return the selected index and element at position i.

Parameters
izero-based position in the selection sequence
Returns
selected index paired with its referenced range element

◆ size()

template<std::input_iterator range_itr_t, std::input_iterator sequence_itr_t>
auto detray::ranges::pick_view< range_itr_t, sequence_itr_t >::size ( ) const
constexprnoexcept
Returns
the number of elements in the underlying range. Simplified implementation compared to view_interface.