Hydra  4.0.1
A header-only templated C++ framework to perform data analysis on massively parallel platforms.
hydra::multivector< hydra::thrust::tuple< T... >, hydra::detail::BackendPolicy< BACKEND > > Class Template Reference

This class implements storage in SoA layouts for table where all elements have the same type. More...

#include <multivector.h>

Collaboration diagram for hydra::multivector< hydra::thrust::tuple< T... >, hydra::detail::BackendPolicy< BACKEND > >:

Public Types

template<typename Functor >
using caster_iterator = hydra::thrust::transform_iterator< Functor, iterator, typename std::result_of< Functor(tuple_type &)>::type >
 
template<typename Functor >
using caster_reverse_iterator = hydra::thrust::transform_iterator< Functor, reverse_iterator, typename std::result_of< Functor(tuple_type &)>::type >
 
template<typename Iterators , unsigned int I1, unsigned int I2, unsigned int ... IN>
using columns_iterator = hydra::thrust::zip_iterator< hydra::thrust::tuple< typename hydra::thrust::tuple_element< I1, Iterators >::type, typename hydra::thrust::tuple_element< I2, Iterators >::type, typename hydra::thrust::tuple_element< IN, Iterators >::type... > >
 
typedef hydra::thrust::zip_iterator< const_iterator_tupleconst_iterator
 
typedef hydra::thrust::tuple< _const_iterator< T >... > const_iterator_tuple
 
typedef hydra::thrust::iterator_traits< const_iterator >::reference const_reference
 
typedef hydra::thrust::tuple< _const_reference< T >... > const_reference_tuple
 
typedef hydra::thrust::zip_iterator< const_reverse_iterator_tupleconst_reverse_iterator
 
typedef hydra::thrust::tuple< _const_reverse_iterator< T >... > const_reverse_iterator_tuple
 
typedef hydra::thrust::zip_iterator< iterator_tupleiterator
 
typedef hydra::thrust::iterator_traits< iterator >::iterator_category iterator_category
 
typedef hydra::thrust::tuple< _iterator< T >... > iterator_tuple
 
typedef hydra::thrust::tuple< _pointer< T >... > pointer_tuple
 
typedef hydra::thrust::iterator_traits< iterator >::reference reference
 
typedef hydra::thrust::tuple< _reference< T >... > reference_tuple
 
typedef hydra::thrust::zip_iterator< reverse_iterator_tuplereverse_iterator
 
typedef hydra::thrust::tuple< _reverse_iterator< T >... > reverse_iterator_tuple
 
typedef size_t size_type
 
typedef hydra::thrust::tuple< _vector< T >... > storage_tuple
 
typedef hydra::thrust::iterator_traits< iterator >::value_type value_type
 
typedef hydra::thrust::tuple< _value_type< T >... > value_type_tuple
 

Public Member Functions

 multivector ()=default
 Default constructor. More...
 
 multivector (size_t n)
 Constructor initializing the multivector with n entries. More...
 
 multivector (size_t n, value_type const &value)
 Constructor initializing the multivector with n copies of value . More...
 
template<typename Int , typename = typename hydra::thrust::detail::enable_if<std::is_integral<Int>::value>::type>
 multivector (hydra::pair< Int, hydra::thrust::tuple< T... > > const &pair)
 Constructor initializing the multivector with n copies of value . More...
 
 multivector (multivector< hydra::thrust::tuple< T... >, detail::BackendPolicy< BACKEND >> const &other)
 Copy constructor. More...
 
 multivector (multivector< hydra::thrust::tuple< T... >, detail::BackendPolicy< BACKEND >> &&other)
 Move constructor. More...
 
template<hydra::detail::Backend BACKEND2>
 multivector (multivector< hydra::thrust::tuple< T... >, detail::BackendPolicy< BACKEND2 >> const &other)
 Copy constructor for containers allocated in different backends. More...
 
template<typename Iterator >
 multivector (Iterator first, Iterator last)
 This constructor builds a multivector from a range. More...
 
template<typename Iterable , typename = typename std::enable_if< (detail::is_iterable<Iterable>::value) && !(detail::is_iterator<Iterable>::value) && (std::is_convertible<decltype(*std::declval<Iterable>().begin()), value_type>::value) >::type>
 multivector (Iterable &&other)
 
reference back ()
 This method returns a reference referring to the last element of this vector_dev. More...
 
const_reference back () const
 This method returns a const reference pointing to the last element of this multivector. More...
 
iterator begin ()
 This method returns an iterator pointing to the beginning of this multivector. More...
 
template<typename Functor >
caster_iterator< Functor > begin (Functor const &caster)
 
const_iterator begin () const
 
template<unsigned int I1, unsigned int I2, unsigned int ... IN>
columns_iterator< iterator_tuple, I1, I2, IN... > begin (placeholders::placeholder< I1 > c1, placeholders::placeholder< I2 > c2, placeholders::placeholder< IN > ...cn)
 
template<unsigned int I>
hydra::thrust::tuple_element< I, iterator_tuple >::type begin (placeholders::placeholder< I >)
 
template<typename Type >
hydra::thrust::tuple_element< detail::index_in_tuple< Type, tuple_type >::value, iterator_tuple >::type begin ()
 
template<unsigned int I1, unsigned int I2, unsigned int ... IN>
columns_iterator< const_iterator_tuple, I1, I2, IN... > begin (placeholders::placeholder< I1 > c1, placeholders::placeholder< I2 > c2, placeholders::placeholder< IN > ...cn) const
 
template<unsigned int I>
hydra::thrust::tuple_element< I, const_iterator_tuple >::type begin (placeholders::placeholder< I >) const
 
size_type capacity () const
 Returns the number of elements which have been reserved in this multivector. More...
 
const_iterator cbegin () const
 
template<unsigned int I1, unsigned int I2, unsigned int ... IN>
columns_iterator< const_iterator_tuple, I1, I2, IN... > cbegin (placeholders::placeholder< I1 > c1, placeholders::placeholder< I2 > c2, placeholders::placeholder< IN > ...cn) const
 
template<unsigned int I>
hydra::thrust::tuple_element< I, const_iterator_tuple >::type cbegin (placeholders::placeholder< I >) const
 
const_iterator cend () const
 
template<unsigned int I1, unsigned int I2, unsigned int ... IN>
columns_iterator< const_iterator_tuple, I1, I2, IN... > cend (placeholders::placeholder< I1 > c1, placeholders::placeholder< I2 > c2, placeholders::placeholder< IN > ...cn) const
 
template<unsigned int I>
hydra::thrust::tuple_element< I, const_iterator_tuple >::type cend (placeholders::placeholder< I >) const
 
void clear ()
 This method resizes this multivector to 0. More...
 
template<typename Type >
hydra::thrust::tuple_element< detail::index_in_tuple< Type, tuple_type >::value, storage_tuple >::type & column ()
 
template<unsigned int I>
hydra::thrust::tuple_element< I, storage_tuple >::type & column (placeholders::placeholder< I >)
 
template<unsigned int I1, unsigned int I2, unsigned int ... IN>
hydra::Range< columns_iterator< iterator_tuple, I1, I2, IN... > > column (placeholders::placeholder< I1 > c1, placeholders::placeholder< I2 > c2, placeholders::placeholder< IN > ...cn)
 
template<unsigned int I>
const hydra::thrust::tuple_element< I, storage_tuple >::type & column (placeholders::placeholder< I >) const
 
template<unsigned int I1, unsigned int I2, unsigned int ... IN>
hydra::Range< columns_iterator< const_iterator_tuple, I1, I2, IN... > > column (placeholders::placeholder< I1 > c1, placeholders::placeholder< I2 > c2, placeholders::placeholder< IN > ...cn) const
 
const_reverse_iterator crbegin () const
 
template<unsigned int I1, unsigned int I2, unsigned int ... IN>
columns_iterator< const_reverse_iterator_tuple, I1, I2, IN... > crbegin (placeholders::placeholder< I1 > c1, placeholders::placeholder< I2 > c2, placeholders::placeholder< IN > ...cn) const
 
template<unsigned int I>
hydra::thrust::tuple_element< I, const_reverse_iterator_tuple >::type crbegin (placeholders::placeholder< I >) const
 
const_reverse_iterator crend () const
 
template<unsigned int I1, unsigned int I2, unsigned int ... IN>
columns_iterator< const_reverse_iterator_tuple, I1, I2, IN... > crend (placeholders::placeholder< I1 > c1, placeholders::placeholder< I2 > c2, placeholders::placeholder< IN > ...cn) const
 
template<unsigned int I>
hydra::thrust::tuple_element< I, const_reverse_iterator_tuple >::type crend (placeholders::placeholder< I >) const
 
bool empty () const
 This method returns true iff size() == 0. More...
 
iterator end ()
 This method returns a const_iterator pointing to one element past the last of this multivector. More...
 
template<typename Functor >
caster_iterator< Functor > end (Functor const &caster)
 
const_iterator end () const
 
template<unsigned int I1, unsigned int I2, unsigned int ... IN>
columns_iterator< iterator_tuple, I1, I2, IN... > end (placeholders::placeholder< I1 > c1, placeholders::placeholder< I2 > c2, placeholders::placeholder< IN > ...cn)
 
template<unsigned int I>
hydra::thrust::tuple_element< I, iterator_tuple >::type end (placeholders::placeholder< I >)
 
template<typename Type >
hydra::thrust::tuple_element< detail::index_in_tuple< Type, tuple_type >::value, iterator_tuple >::type end ()
 
template<unsigned int I1, unsigned int I2, unsigned int ... IN>
columns_iterator< const_iterator_tuple, I1, I2, IN... > end (placeholders::placeholder< I1 > c1, placeholders::placeholder< I2 > c2, placeholders::placeholder< IN > ...cn) const
 
template<unsigned int I>
hydra::thrust::tuple_element< I, const_iterator_tuple >::type end (placeholders::placeholder< I >) const
 
iterator erase (iterator pos)
 This method removes the element at position pos. More...
 
iterator erase (iterator first, iterator last)
 This method removes the range of elements [first,last) from this multivector. More...
 
reference front ()
 This method returns a const_reference referring to the first element of this multivector. More...
 
const_reference front () const
 This method returns a reference pointing to the first element of this multivector. More...
 
iterator insert (iterator pos, const value_type &x)
 This method inserts a single copy of a given exemplar value at the specified position in this multivector. More...
 
void insert (iterator pos, size_type n, const value_type &x)
 This method inserts a copy of an exemplar value to a range at the specified position in this multivector. More...
 
template<typename InputIterator >
hydra::thrust::detail::enable_if< detail::is_zip_iterator< InputIterator >::value &&std::is_convertible< typename hydra::thrust::iterator_traits< InputIterator >::value_type, value_type >::value, void >::type insert (iterator pos, InputIterator first, InputIterator last)
 This method inserts a copy of an input range at the specified position in this multivector. More...
 
template<typename ... Iterables>
auto meld (Iterables &&...iterables) -> typename std::enable_if< detail::all_true< detail::is_iterable< Iterables >::value... >::value, hydra::Range< decltype(detail::meld_iterators(begin(), std::forward< Iterables >(iterables).begin()...))>>::type
 
multivector< hydra::thrust::tuple< T... >, detail::BackendPolicy< BACKEND > > & operator= (multivector< hydra::thrust::tuple< T... >, detail::BackendPolicy< BACKEND >> const &other)
 Assignment operator. More...
 
multivector< hydra::thrust::tuple< T... >, detail::BackendPolicy< BACKEND > > & operator= (multivector< hydra::thrust::tuple< T... >, detail::BackendPolicy< BACKEND > > &&other)
 Move-assignment operator. More...
 
template<hydra::detail::Backend BACKEND2>
multivector< hydra::thrust::tuple< T... >, detail::BackendPolicy< BACKEND > > & operator= (multivector< hydra::thrust::tuple< T... >, detail::BackendPolicy< BACKEND2 > > const &other)
 Assignment operator. More...
 
template<typename Functor >
caster_iterator< Functor > operator[] (Functor const &caster)
 
template<unsigned int I>
hydra::thrust::tuple_element< I, iterator_tuple >::type operator[] (placeholders::placeholder< I > index)
 
template<unsigned int I>
hydra::thrust::tuple_element< I, const_iterator_tuple >::type operator[] (placeholders::placeholder< I > index) const
 
reference operator[] (size_t n)
 Subscript access to the data contained in this vector_dev. More...
 
const_reference operator[] (size_t n) const
 Subscript read access to the data contained in this vector_dev. More...
 
void pop_back ()
 This method erases the last element of this multivector, invalidating all iterators and references to it. More...
 
void push_back (value_type const &value)
 This method appends the given element to the end of this multivector. More...
 
template<typename Functor , typename Obj >
void push_back (Functor const &functor, Obj const &obj)
 This method appends the given element to the end of this multivector. More...
 
template<typename Functor >
caster_reverse_iterator< Functor > rbegin (Functor const &caster)
 
reverse_iterator rbegin ()
 
const_reverse_iterator rbegin () const
 
template<unsigned int I1, unsigned int I2, unsigned int ... IN>
columns_iterator< reverse_iterator_tuple, I1, I2, IN... > rbegin (placeholders::placeholder< I1 > c1, placeholders::placeholder< I2 > c2, placeholders::placeholder< IN > ...cn)
 
template<unsigned int I>
hydra::thrust::tuple_element< I, reverse_iterator_tuple >::type rbegin (placeholders::placeholder< I >)
 
template<typename Type >
hydra::thrust::tuple_element< detail::index_in_tuple< Type, tuple_type >::value, reverse_iterator_tuple >::type rbegin ()
 
template<unsigned int I1, unsigned int I2, unsigned int ... IN>
columns_iterator< const_reverse_iterator_tuple, I1, I2, IN... > rbegin (placeholders::placeholder< I1 > c1, placeholders::placeholder< I2 > c2, placeholders::placeholder< IN > ...cn) const
 
template<unsigned int I>
hydra::thrust::tuple_element< I, const_reverse_iterator_tuple >::type rbegin (placeholders::placeholder< I >) const
 
template<typename Functor >
caster_reverse_iterator< Functor > rend (Functor const &caster)
 
reverse_iterator rend ()
 
const_reverse_iterator rend () const
 
template<unsigned int I1, unsigned int I2, unsigned int ... IN>
columns_iterator< reverse_iterator_tuple, I1, I2, IN... > rend (placeholders::placeholder< I1 > c1, placeholders::placeholder< I2 > c2, placeholders::placeholder< IN > ...cn)
 
template<unsigned int I>
hydra::thrust::tuple_element< I, reverse_iterator_tuple >::type rend (placeholders::placeholder< I >)
 
template<typename Type >
hydra::thrust::tuple_element< detail::index_in_tuple< Type, tuple_type >::value, reverse_iterator_tuple >::type rend ()
 
template<unsigned int I1, unsigned int I2, unsigned int ... IN>
columns_iterator< const_reverse_iterator_tuple, I1, I2, IN... > rend (placeholders::placeholder< I1 > c1, placeholders::placeholder< I2 > c2, placeholders::placeholder< IN > ...cn) const
 
template<unsigned int I>
hydra::thrust::tuple_element< I, const_reverse_iterator_tuple >::type rend (placeholders::placeholder< I >) const
 
void reserve (size_type size)
 If n is less than or equal to capacity(), this call has no effect. More...
 
void resize (size_type new_size)
 Resizes this multivector to the specified number of elements. More...
 
void shrink_to_fit ()
 This method shrinks the capacity of this multivector to exactly fit its elements. More...
 
size_type size () const
 Returns the number of elements in this multivector. More...
 

Detailed Description

template<typename ... T, hydra::detail::Backend BACKEND>
class hydra::multivector< hydra::thrust::tuple< T... >, hydra::detail::BackendPolicy< BACKEND > >

This class implements storage in SoA layouts for table where all elements have the same type.

Member Typedef Documentation

◆ caster_iterator

template<typename ... T, hydra::detail::Backend BACKEND>
template<typename Functor >
using hydra::multivector< hydra::thrust::tuple< T... >, hydra::detail::BackendPolicy< BACKEND > >::caster_iterator = hydra::thrust::transform_iterator< Functor, iterator, typename std::result_of<Functor(tuple_type&)>::type >

◆ caster_reverse_iterator

template<typename ... T, hydra::detail::Backend BACKEND>
template<typename Functor >
using hydra::multivector< hydra::thrust::tuple< T... >, hydra::detail::BackendPolicy< BACKEND > >::caster_reverse_iterator = hydra::thrust::transform_iterator< Functor, reverse_iterator, typename std::result_of<Functor(tuple_type&)>::type >

◆ columns_iterator

template<typename ... T, hydra::detail::Backend BACKEND>
template<typename Iterators , unsigned int I1, unsigned int I2, unsigned int ... IN>
using hydra::multivector< hydra::thrust::tuple< T... >, hydra::detail::BackendPolicy< BACKEND > >::columns_iterator = hydra::thrust::zip_iterator< hydra::thrust::tuple< typename hydra::thrust::tuple_element< I1, Iterators >::type, typename hydra::thrust::tuple_element< I2, Iterators >::type, typename hydra::thrust::tuple_element< IN, Iterators >::type...> >

◆ const_iterator

template<typename ... T, hydra::detail::Backend BACKEND>
typedef hydra::thrust::zip_iterator<const_iterator_tuple> hydra::multivector< hydra::thrust::tuple< T... >, hydra::detail::BackendPolicy< BACKEND > >::const_iterator

◆ const_iterator_tuple

template<typename ... T, hydra::detail::Backend BACKEND>
typedef hydra::thrust::tuple< _const_iterator<T>... > hydra::multivector< hydra::thrust::tuple< T... >, hydra::detail::BackendPolicy< BACKEND > >::const_iterator_tuple

◆ const_reference

template<typename ... T, hydra::detail::Backend BACKEND>
typedef hydra::thrust::iterator_traits<const_iterator>::reference hydra::multivector< hydra::thrust::tuple< T... >, hydra::detail::BackendPolicy< BACKEND > >::const_reference

◆ const_reference_tuple

template<typename ... T, hydra::detail::Backend BACKEND>
typedef hydra::thrust::tuple< _const_reference<T>... > hydra::multivector< hydra::thrust::tuple< T... >, hydra::detail::BackendPolicy< BACKEND > >::const_reference_tuple

◆ const_reverse_iterator

template<typename ... T, hydra::detail::Backend BACKEND>
typedef hydra::thrust::zip_iterator<const_reverse_iterator_tuple> hydra::multivector< hydra::thrust::tuple< T... >, hydra::detail::BackendPolicy< BACKEND > >::const_reverse_iterator

◆ const_reverse_iterator_tuple

template<typename ... T, hydra::detail::Backend BACKEND>
typedef hydra::thrust::tuple< _const_reverse_iterator<T>...> hydra::multivector< hydra::thrust::tuple< T... >, hydra::detail::BackendPolicy< BACKEND > >::const_reverse_iterator_tuple

◆ iterator

template<typename ... T, hydra::detail::Backend BACKEND>
typedef hydra::thrust::zip_iterator<iterator_tuple> hydra::multivector< hydra::thrust::tuple< T... >, hydra::detail::BackendPolicy< BACKEND > >::iterator

◆ iterator_category

template<typename ... T, hydra::detail::Backend BACKEND>
typedef hydra::thrust::iterator_traits<iterator>::iterator_category hydra::multivector< hydra::thrust::tuple< T... >, hydra::detail::BackendPolicy< BACKEND > >::iterator_category

◆ iterator_tuple

template<typename ... T, hydra::detail::Backend BACKEND>
typedef hydra::thrust::tuple< _iterator<T>... > hydra::multivector< hydra::thrust::tuple< T... >, hydra::detail::BackendPolicy< BACKEND > >::iterator_tuple

◆ pointer_tuple

template<typename ... T, hydra::detail::Backend BACKEND>
typedef hydra::thrust::tuple< _pointer<T>... > hydra::multivector< hydra::thrust::tuple< T... >, hydra::detail::BackendPolicy< BACKEND > >::pointer_tuple

◆ reference

template<typename ... T, hydra::detail::Backend BACKEND>
typedef hydra::thrust::iterator_traits<iterator>::reference hydra::multivector< hydra::thrust::tuple< T... >, hydra::detail::BackendPolicy< BACKEND > >::reference

◆ reference_tuple

template<typename ... T, hydra::detail::Backend BACKEND>
typedef hydra::thrust::tuple< _reference<T>... > hydra::multivector< hydra::thrust::tuple< T... >, hydra::detail::BackendPolicy< BACKEND > >::reference_tuple

◆ reverse_iterator

template<typename ... T, hydra::detail::Backend BACKEND>
typedef hydra::thrust::zip_iterator<reverse_iterator_tuple> hydra::multivector< hydra::thrust::tuple< T... >, hydra::detail::BackendPolicy< BACKEND > >::reverse_iterator

◆ reverse_iterator_tuple

template<typename ... T, hydra::detail::Backend BACKEND>
typedef hydra::thrust::tuple< _reverse_iterator<T>... > hydra::multivector< hydra::thrust::tuple< T... >, hydra::detail::BackendPolicy< BACKEND > >::reverse_iterator_tuple

◆ size_type

template<typename ... T, hydra::detail::Backend BACKEND>
typedef size_t hydra::multivector< hydra::thrust::tuple< T... >, hydra::detail::BackendPolicy< BACKEND > >::size_type

◆ storage_tuple

template<typename ... T, hydra::detail::Backend BACKEND>
typedef hydra::thrust::tuple< _vector<T>... > hydra::multivector< hydra::thrust::tuple< T... >, hydra::detail::BackendPolicy< BACKEND > >::storage_tuple

◆ value_type

template<typename ... T, hydra::detail::Backend BACKEND>
typedef hydra::thrust::iterator_traits<iterator>::value_type hydra::multivector< hydra::thrust::tuple< T... >, hydra::detail::BackendPolicy< BACKEND > >::value_type

◆ value_type_tuple

template<typename ... T, hydra::detail::Backend BACKEND>
typedef hydra::thrust::tuple< _value_type<T>...> hydra::multivector< hydra::thrust::tuple< T... >, hydra::detail::BackendPolicy< BACKEND > >::value_type_tuple

Constructor & Destructor Documentation

◆ multivector() [1/9]

template<typename ... T, hydra::detail::Backend BACKEND>
hydra::multivector< hydra::thrust::tuple< T... >, hydra::detail::BackendPolicy< BACKEND > >::multivector ( )
default

Default constructor.

This constructor creates an empty multivector.

◆ multivector() [2/9]

template<typename ... T, hydra::detail::Backend BACKEND>
hydra::multivector< hydra::thrust::tuple< T... >, hydra::detail::BackendPolicy< BACKEND > >::multivector ( size_t  n)
inline

Constructor initializing the multivector with n entries.

Parameters
nThe number of elements to initially create.

◆ multivector() [3/9]

template<typename ... T, hydra::detail::Backend BACKEND>
hydra::multivector< hydra::thrust::tuple< T... >, hydra::detail::BackendPolicy< BACKEND > >::multivector ( size_t  n,
value_type const &  value 
)
inline

Constructor initializing the multivector with n copies of value .

Parameters
nnumber of elements
valueobject to copy from (hydra::tuple or convertible to hydra::tuple)

◆ multivector() [4/9]

template<typename ... T, hydra::detail::Backend BACKEND>
template<typename Int , typename = typename hydra::thrust::detail::enable_if<std::is_integral<Int>::value>::type>
hydra::multivector< hydra::thrust::tuple< T... >, hydra::detail::BackendPolicy< BACKEND > >::multivector ( hydra::pair< Int, hydra::thrust::tuple< T... > > const &  pair)
inline

Constructor initializing the multivector with n copies of value .

Parameters
pairhydra::pair<size_t, hydra::tuple<T...> > object to copy from.

◆ multivector() [5/9]

template<typename ... T, hydra::detail::Backend BACKEND>
hydra::multivector< hydra::thrust::tuple< T... >, hydra::detail::BackendPolicy< BACKEND > >::multivector ( multivector< hydra::thrust::tuple< T... >, detail::BackendPolicy< BACKEND >> const &  other)
inline

Copy constructor.

Parameters
other

◆ multivector() [6/9]

template<typename ... T, hydra::detail::Backend BACKEND>
hydra::multivector< hydra::thrust::tuple< T... >, hydra::detail::BackendPolicy< BACKEND > >::multivector ( multivector< hydra::thrust::tuple< T... >, detail::BackendPolicy< BACKEND >> &&  other)
inline

Move constructor.

Parameters
other

◆ multivector() [7/9]

template<typename ... T, hydra::detail::Backend BACKEND>
template<hydra::detail::Backend BACKEND2>
hydra::multivector< hydra::thrust::tuple< T... >, hydra::detail::BackendPolicy< BACKEND > >::multivector ( multivector< hydra::thrust::tuple< T... >, detail::BackendPolicy< BACKEND2 >> const &  other)
inline

Copy constructor for containers allocated in different backends.

Parameters
other

◆ multivector() [8/9]

template<typename ... T, hydra::detail::Backend BACKEND>
template<typename Iterator >
hydra::multivector< hydra::thrust::tuple< T... >, hydra::detail::BackendPolicy< BACKEND > >::multivector ( Iterator  first,
Iterator  last 
)
inline

This constructor builds a multivector from a range.

Parameters
firstThe beginning of the range.
lastThe end of the range.

◆ multivector() [9/9]

template<typename ... T, hydra::detail::Backend BACKEND>
template<typename Iterable , typename = typename std::enable_if< (detail::is_iterable<Iterable>::value) && !(detail::is_iterator<Iterable>::value) && (std::is_convertible<decltype(*std::declval<Iterable>().begin()), value_type>::value) >::type>
hydra::multivector< hydra::thrust::tuple< T... >, hydra::detail::BackendPolicy< BACKEND > >::multivector ( Iterable &&  other)
inline

Member Function Documentation

◆ back() [1/2]

template<typename ... T, hydra::detail::Backend BACKEND>
reference hydra::multivector< hydra::thrust::tuple< T... >, hydra::detail::BackendPolicy< BACKEND > >::back ( )
inline

This method returns a reference referring to the last element of this vector_dev.

Returns
The last element of this multivector.

◆ back() [2/2]

template<typename ... T, hydra::detail::Backend BACKEND>
const_reference hydra::multivector< hydra::thrust::tuple< T... >, hydra::detail::BackendPolicy< BACKEND > >::back ( ) const
inline

This method returns a const reference pointing to the last element of this multivector.

Returns
The last element of this multivector.

◆ begin() [1/8]

template<typename ... T, hydra::detail::Backend BACKEND>
iterator hydra::multivector< hydra::thrust::tuple< T... >, hydra::detail::BackendPolicy< BACKEND > >::begin ( )
inline

This method returns an iterator pointing to the beginning of this multivector.

Returns
iterator

◆ begin() [2/8]

template<typename ... T, hydra::detail::Backend BACKEND>
template<typename Functor >
caster_iterator<Functor> hydra::multivector< hydra::thrust::tuple< T... >, hydra::detail::BackendPolicy< BACKEND > >::begin ( Functor const &  caster)
inline

◆ begin() [3/8]

template<typename ... T, hydra::detail::Backend BACKEND>
const_iterator hydra::multivector< hydra::thrust::tuple< T... >, hydra::detail::BackendPolicy< BACKEND > >::begin ( ) const
inline

◆ begin() [4/8]

template<typename ... T, hydra::detail::Backend BACKEND>
template<unsigned int I1, unsigned int I2, unsigned int ... IN>
columns_iterator< iterator_tuple, I1, I2,IN...> hydra::multivector< hydra::thrust::tuple< T... >, hydra::detail::BackendPolicy< BACKEND > >::begin ( placeholders::placeholder< I1 >  c1,
placeholders::placeholder< I2 >  c2,
placeholders::placeholder< IN > ...  cn 
)
inline

◆ begin() [5/8]

template<typename ... T, hydra::detail::Backend BACKEND>
template<unsigned int I>
hydra::thrust::tuple_element<I, iterator_tuple>::type hydra::multivector< hydra::thrust::tuple< T... >, hydra::detail::BackendPolicy< BACKEND > >::begin ( placeholders::placeholder< I >  )
inline

◆ begin() [6/8]

template<typename ... T, hydra::detail::Backend BACKEND>
template<typename Type >
hydra::thrust::tuple_element< detail::index_in_tuple<Type, tuple_type>::value , iterator_tuple >::type hydra::multivector< hydra::thrust::tuple< T... >, hydra::detail::BackendPolicy< BACKEND > >::begin ( )
inline

◆ begin() [7/8]

template<typename ... T, hydra::detail::Backend BACKEND>
template<unsigned int I1, unsigned int I2, unsigned int ... IN>
columns_iterator< const_iterator_tuple, I1, I2,IN...> hydra::multivector< hydra::thrust::tuple< T... >, hydra::detail::BackendPolicy< BACKEND > >::begin ( placeholders::placeholder< I1 >  c1,
placeholders::placeholder< I2 >  c2,
placeholders::placeholder< IN > ...  cn 
) const
inline

◆ begin() [8/8]

template<typename ... T, hydra::detail::Backend BACKEND>
template<unsigned int I>
hydra::thrust::tuple_element<I, const_iterator_tuple>::type hydra::multivector< hydra::thrust::tuple< T... >, hydra::detail::BackendPolicy< BACKEND > >::begin ( placeholders::placeholder< I >  ) const
inline

◆ capacity()

template<typename ... T, hydra::detail::Backend BACKEND>
size_type hydra::multivector< hydra::thrust::tuple< T... >, hydra::detail::BackendPolicy< BACKEND > >::capacity ( ) const
inline

Returns the number of elements which have been reserved in this multivector.

◆ cbegin() [1/3]

template<typename ... T, hydra::detail::Backend BACKEND>
const_iterator hydra::multivector< hydra::thrust::tuple< T... >, hydra::detail::BackendPolicy< BACKEND > >::cbegin ( ) const
inline

◆ cbegin() [2/3]

template<typename ... T, hydra::detail::Backend BACKEND>
template<unsigned int I1, unsigned int I2, unsigned int ... IN>
columns_iterator< const_iterator_tuple, I1, I2,IN...> hydra::multivector< hydra::thrust::tuple< T... >, hydra::detail::BackendPolicy< BACKEND > >::cbegin ( placeholders::placeholder< I1 >  c1,
placeholders::placeholder< I2 >  c2,
placeholders::placeholder< IN > ...  cn 
) const
inline

◆ cbegin() [3/3]

template<typename ... T, hydra::detail::Backend BACKEND>
template<unsigned int I>
hydra::thrust::tuple_element<I, const_iterator_tuple>::type hydra::multivector< hydra::thrust::tuple< T... >, hydra::detail::BackendPolicy< BACKEND > >::cbegin ( placeholders::placeholder< I >  ) const
inline

◆ cend() [1/3]

template<typename ... T, hydra::detail::Backend BACKEND>
const_iterator hydra::multivector< hydra::thrust::tuple< T... >, hydra::detail::BackendPolicy< BACKEND > >::cend ( ) const
inline

◆ cend() [2/3]

template<typename ... T, hydra::detail::Backend BACKEND>
template<unsigned int I1, unsigned int I2, unsigned int ... IN>
columns_iterator< const_iterator_tuple, I1, I2,IN...> hydra::multivector< hydra::thrust::tuple< T... >, hydra::detail::BackendPolicy< BACKEND > >::cend ( placeholders::placeholder< I1 >  c1,
placeholders::placeholder< I2 >  c2,
placeholders::placeholder< IN > ...  cn 
) const
inline

◆ cend() [3/3]

template<typename ... T, hydra::detail::Backend BACKEND>
template<unsigned int I>
hydra::thrust::tuple_element<I, const_iterator_tuple>::type hydra::multivector< hydra::thrust::tuple< T... >, hydra::detail::BackendPolicy< BACKEND > >::cend ( placeholders::placeholder< I >  ) const
inline

◆ clear()

template<typename ... T, hydra::detail::Backend BACKEND>
void hydra::multivector< hydra::thrust::tuple< T... >, hydra::detail::BackendPolicy< BACKEND > >::clear ( )
inline

This method resizes this multivector to 0.

◆ column() [1/5]

template<typename ... T, hydra::detail::Backend BACKEND>
template<typename Type >
hydra::thrust::tuple_element<detail::index_in_tuple<Type, tuple_type>::value , storage_tuple>::type& hydra::multivector< hydra::thrust::tuple< T... >, hydra::detail::BackendPolicy< BACKEND > >::column ( )
inline

◆ column() [2/5]

template<typename ... T, hydra::detail::Backend BACKEND>
template<unsigned int I>
hydra::thrust::tuple_element<I, storage_tuple>::type& hydra::multivector< hydra::thrust::tuple< T... >, hydra::detail::BackendPolicy< BACKEND > >::column ( placeholders::placeholder< I >  )
inline

◆ column() [3/5]

template<typename ... T, hydra::detail::Backend BACKEND>
template<unsigned int I1, unsigned int I2, unsigned int ... IN>
hydra::Range<columns_iterator< iterator_tuple, I1, I2,IN...> > hydra::multivector< hydra::thrust::tuple< T... >, hydra::detail::BackendPolicy< BACKEND > >::column ( placeholders::placeholder< I1 >  c1,
placeholders::placeholder< I2 >  c2,
placeholders::placeholder< IN > ...  cn 
)
inline

◆ column() [4/5]

template<typename ... T, hydra::detail::Backend BACKEND>
template<unsigned int I>
const hydra::thrust::tuple_element<I, storage_tuple>::type& hydra::multivector< hydra::thrust::tuple< T... >, hydra::detail::BackendPolicy< BACKEND > >::column ( placeholders::placeholder< I >  ) const
inline

◆ column() [5/5]

template<typename ... T, hydra::detail::Backend BACKEND>
template<unsigned int I1, unsigned int I2, unsigned int ... IN>
hydra::Range<columns_iterator< const_iterator_tuple, I1, I2,IN...> > hydra::multivector< hydra::thrust::tuple< T... >, hydra::detail::BackendPolicy< BACKEND > >::column ( placeholders::placeholder< I1 >  c1,
placeholders::placeholder< I2 >  c2,
placeholders::placeholder< IN > ...  cn 
) const
inline

◆ crbegin() [1/3]

template<typename ... T, hydra::detail::Backend BACKEND>
const_reverse_iterator hydra::multivector< hydra::thrust::tuple< T... >, hydra::detail::BackendPolicy< BACKEND > >::crbegin ( ) const
inline

◆ crbegin() [2/3]

template<typename ... T, hydra::detail::Backend BACKEND>
template<unsigned int I1, unsigned int I2, unsigned int ... IN>
columns_iterator< const_reverse_iterator_tuple, I1, I2,IN...> hydra::multivector< hydra::thrust::tuple< T... >, hydra::detail::BackendPolicy< BACKEND > >::crbegin ( placeholders::placeholder< I1 >  c1,
placeholders::placeholder< I2 >  c2,
placeholders::placeholder< IN > ...  cn 
) const
inline

◆ crbegin() [3/3]

template<typename ... T, hydra::detail::Backend BACKEND>
template<unsigned int I>
hydra::thrust::tuple_element<I, const_reverse_iterator_tuple>::type hydra::multivector< hydra::thrust::tuple< T... >, hydra::detail::BackendPolicy< BACKEND > >::crbegin ( placeholders::placeholder< I >  ) const
inline

◆ crend() [1/3]

template<typename ... T, hydra::detail::Backend BACKEND>
const_reverse_iterator hydra::multivector< hydra::thrust::tuple< T... >, hydra::detail::BackendPolicy< BACKEND > >::crend ( ) const
inline

◆ crend() [2/3]

template<typename ... T, hydra::detail::Backend BACKEND>
template<unsigned int I1, unsigned int I2, unsigned int ... IN>
columns_iterator< const_reverse_iterator_tuple, I1, I2,IN...> hydra::multivector< hydra::thrust::tuple< T... >, hydra::detail::BackendPolicy< BACKEND > >::crend ( placeholders::placeholder< I1 >  c1,
placeholders::placeholder< I2 >  c2,
placeholders::placeholder< IN > ...  cn 
) const
inline

◆ crend() [3/3]

template<typename ... T, hydra::detail::Backend BACKEND>
template<unsigned int I>
hydra::thrust::tuple_element<I, const_reverse_iterator_tuple>::type hydra::multivector< hydra::thrust::tuple< T... >, hydra::detail::BackendPolicy< BACKEND > >::crend ( placeholders::placeholder< I >  ) const
inline

◆ empty()

template<typename ... T, hydra::detail::Backend BACKEND>
bool hydra::multivector< hydra::thrust::tuple< T... >, hydra::detail::BackendPolicy< BACKEND > >::empty ( ) const
inline

This method returns true iff size() == 0.

Returns
true if size() == 0; false, otherwise.

◆ end() [1/8]

template<typename ... T, hydra::detail::Backend BACKEND>
iterator hydra::multivector< hydra::thrust::tuple< T... >, hydra::detail::BackendPolicy< BACKEND > >::end ( )
inline

This method returns a const_iterator pointing to one element past the last of this multivector.

Returns
begin() + size().

◆ end() [2/8]

template<typename ... T, hydra::detail::Backend BACKEND>
template<typename Functor >
caster_iterator<Functor> hydra::multivector< hydra::thrust::tuple< T... >, hydra::detail::BackendPolicy< BACKEND > >::end ( Functor const &  caster)
inline

◆ end() [3/8]

template<typename ... T, hydra::detail::Backend BACKEND>
const_iterator hydra::multivector< hydra::thrust::tuple< T... >, hydra::detail::BackendPolicy< BACKEND > >::end ( ) const
inline

◆ end() [4/8]

template<typename ... T, hydra::detail::Backend BACKEND>
template<unsigned int I1, unsigned int I2, unsigned int ... IN>
columns_iterator< iterator_tuple, I1, I2,IN...> hydra::multivector< hydra::thrust::tuple< T... >, hydra::detail::BackendPolicy< BACKEND > >::end ( placeholders::placeholder< I1 >  c1,
placeholders::placeholder< I2 >  c2,
placeholders::placeholder< IN > ...  cn 
)
inline

◆ end() [5/8]

template<typename ... T, hydra::detail::Backend BACKEND>
template<unsigned int I>
hydra::thrust::tuple_element<I, iterator_tuple>::type hydra::multivector< hydra::thrust::tuple< T... >, hydra::detail::BackendPolicy< BACKEND > >::end ( placeholders::placeholder< I >  )
inline

◆ end() [6/8]

template<typename ... T, hydra::detail::Backend BACKEND>
template<typename Type >
hydra::thrust::tuple_element< detail::index_in_tuple<Type, tuple_type>::value , iterator_tuple >::type hydra::multivector< hydra::thrust::tuple< T... >, hydra::detail::BackendPolicy< BACKEND > >::end ( )
inline

◆ end() [7/8]

template<typename ... T, hydra::detail::Backend BACKEND>
template<unsigned int I1, unsigned int I2, unsigned int ... IN>
columns_iterator< const_iterator_tuple, I1, I2,IN...> hydra::multivector< hydra::thrust::tuple< T... >, hydra::detail::BackendPolicy< BACKEND > >::end ( placeholders::placeholder< I1 >  c1,
placeholders::placeholder< I2 >  c2,
placeholders::placeholder< IN > ...  cn 
) const
inline

◆ end() [8/8]

template<typename ... T, hydra::detail::Backend BACKEND>
template<unsigned int I>
hydra::thrust::tuple_element<I, const_iterator_tuple>::type hydra::multivector< hydra::thrust::tuple< T... >, hydra::detail::BackendPolicy< BACKEND > >::end ( placeholders::placeholder< I >  ) const
inline

◆ erase() [1/2]

template<typename ... T, hydra::detail::Backend BACKEND>
iterator hydra::multivector< hydra::thrust::tuple< T... >, hydra::detail::BackendPolicy< BACKEND > >::erase ( iterator  pos)
inline

This method removes the element at position pos.

Parameters
posThe position of the element of interest.
Returns
An iterator pointing to the new location of the element that followed the element at position pos.

◆ erase() [2/2]

template<typename ... T, hydra::detail::Backend BACKEND>
iterator hydra::multivector< hydra::thrust::tuple< T... >, hydra::detail::BackendPolicy< BACKEND > >::erase ( iterator  first,
iterator  last 
)
inline

This method removes the range of elements [first,last) from this multivector.

Parameters
firstThe beginning of the range of elements to remove.
lastThe end of the range of elements to remove.
Returns
An iterator pointing to the new location of the element that followed the last element in the sequence [first,last).

◆ front() [1/2]

template<typename ... T, hydra::detail::Backend BACKEND>
reference hydra::multivector< hydra::thrust::tuple< T... >, hydra::detail::BackendPolicy< BACKEND > >::front ( )
inline

This method returns a const_reference referring to the first element of this multivector.

Returns
The first element of this multivector.

◆ front() [2/2]

template<typename ... T, hydra::detail::Backend BACKEND>
const_reference hydra::multivector< hydra::thrust::tuple< T... >, hydra::detail::BackendPolicy< BACKEND > >::front ( ) const
inline

This method returns a reference pointing to the first element of this multivector.

Returns
The first element of this multivector.

◆ insert() [1/3]

template<typename ... T, hydra::detail::Backend BACKEND>
iterator hydra::multivector< hydra::thrust::tuple< T... >, hydra::detail::BackendPolicy< BACKEND > >::insert ( iterator  pos,
const value_type x 
)
inline

This method inserts a single copy of a given exemplar value at the specified position in this multivector.

Parameters
positionThe insertion position.
xThe exemplar element to copy & insert.
Returns
An iterator pointing to the newly inserted element.

◆ insert() [2/3]

template<typename ... T, hydra::detail::Backend BACKEND>
void hydra::multivector< hydra::thrust::tuple< T... >, hydra::detail::BackendPolicy< BACKEND > >::insert ( iterator  pos,
size_type  n,
const value_type x 
)
inline

This method inserts a copy of an exemplar value to a range at the specified position in this multivector.

Parameters
positionThe insertion position
nThe number of insertions to perform.
xThe value to replicate and insert.

◆ insert() [3/3]

template<typename ... T, hydra::detail::Backend BACKEND>
template<typename InputIterator >
hydra::thrust::detail::enable_if< detail::is_zip_iterator<InputIterator>::value && std::is_convertible<typename hydra::thrust::iterator_traits<InputIterator>::value_type, value_type>::value, void>::type hydra::multivector< hydra::thrust::tuple< T... >, hydra::detail::BackendPolicy< BACKEND > >::insert ( iterator  pos,
InputIterator  first,
InputIterator  last 
)
inline

This method inserts a copy of an input range at the specified position in this multivector.

Parameters
positionThe insertion position.
firstThe beginning of the range to copy.
lastThe end of the range to copy.
Template Parameters
InputIteratoris a model of <a href="http://www.sgi.com/tech/stl/InputIterator.html>Input Iterator</a>, and \p InputIterator's \c value_type is a model of <a href="http://www.sgi.com/tech/stl/Assignable.html">Assignable.

◆ meld()

template<typename ... T, hydra::detail::Backend BACKEND>
template<typename ... Iterables>
auto hydra::multivector< hydra::thrust::tuple< T... >, hydra::detail::BackendPolicy< BACKEND > >::meld ( Iterables &&...  iterables) -> typename std::enable_if<detail::all_true<detail::is_iterable<Iterables>::value...>::value, hydra::Range<decltype(detail::meld_iterators(begin(), std::forward<Iterables>(iterables).begin()... ))>>::type
inline

◆ operator=() [1/3]

template<typename ... T, hydra::detail::Backend BACKEND>
multivector<hydra::thrust::tuple<T...>,detail::BackendPolicy<BACKEND> >& hydra::multivector< hydra::thrust::tuple< T... >, hydra::detail::BackendPolicy< BACKEND > >::operator= ( multivector< hydra::thrust::tuple< T... >, detail::BackendPolicy< BACKEND >> const &  other)
inline

Assignment operator.

Parameters
other
Returns

◆ operator=() [2/3]

template<typename ... T, hydra::detail::Backend BACKEND>
multivector<hydra::thrust::tuple<T...>,detail::BackendPolicy<BACKEND> >& hydra::multivector< hydra::thrust::tuple< T... >, hydra::detail::BackendPolicy< BACKEND > >::operator= ( multivector< hydra::thrust::tuple< T... >, detail::BackendPolicy< BACKEND > > &&  other)
inline

Move-assignment operator.

Parameters
other
Returns

◆ operator=() [3/3]

template<typename ... T, hydra::detail::Backend BACKEND>
template<hydra::detail::Backend BACKEND2>
multivector<hydra::thrust::tuple<T...>,detail::BackendPolicy<BACKEND> >& hydra::multivector< hydra::thrust::tuple< T... >, hydra::detail::BackendPolicy< BACKEND > >::operator= ( multivector< hydra::thrust::tuple< T... >, detail::BackendPolicy< BACKEND2 > > const &  other)
inline

Assignment operator.

Parameters
other
Returns

◆ operator[]() [1/5]

template<typename ... T, hydra::detail::Backend BACKEND>
template<typename Functor >
caster_iterator<Functor> hydra::multivector< hydra::thrust::tuple< T... >, hydra::detail::BackendPolicy< BACKEND > >::operator[] ( Functor const &  caster)
inline

◆ operator[]() [2/5]

template<typename ... T, hydra::detail::Backend BACKEND>
template<unsigned int I>
hydra::thrust::tuple_element<I, iterator_tuple>::type hydra::multivector< hydra::thrust::tuple< T... >, hydra::detail::BackendPolicy< BACKEND > >::operator[] ( placeholders::placeholder< I >  index)
inline

◆ operator[]() [3/5]

template<typename ... T, hydra::detail::Backend BACKEND>
template<unsigned int I>
hydra::thrust::tuple_element<I, const_iterator_tuple>::type hydra::multivector< hydra::thrust::tuple< T... >, hydra::detail::BackendPolicy< BACKEND > >::operator[] ( placeholders::placeholder< I >  index) const
inline

◆ operator[]() [4/5]

template<typename ... T, hydra::detail::Backend BACKEND>
reference hydra::multivector< hydra::thrust::tuple< T... >, hydra::detail::BackendPolicy< BACKEND > >::operator[] ( size_t  n)
inline

Subscript access to the data contained in this vector_dev.

Parameters
nThe index of the element for which data should be accessed.
Returns
Read/write reference to data.

This operator allows for easy, array-style, data access. Note that data access with this operator is unchecked and out_of_range lookups are not defined.

◆ operator[]() [5/5]

template<typename ... T, hydra::detail::Backend BACKEND>
const_reference hydra::multivector< hydra::thrust::tuple< T... >, hydra::detail::BackendPolicy< BACKEND > >::operator[] ( size_t  n) const
inline

Subscript read access to the data contained in this vector_dev.

Parameters
nThe index of the element for which data should be accessed.
Returns
Read reference to data.

This operator allows for easy, array-style, data access. Note that data access with this operator is unchecked and out_of_range lookups are not defined.

◆ pop_back()

template<typename ... T, hydra::detail::Backend BACKEND>
void hydra::multivector< hydra::thrust::tuple< T... >, hydra::detail::BackendPolicy< BACKEND > >::pop_back ( )
inline

This method erases the last element of this multivector, invalidating all iterators and references to it.

◆ push_back() [1/2]

template<typename ... T, hydra::detail::Backend BACKEND>
void hydra::multivector< hydra::thrust::tuple< T... >, hydra::detail::BackendPolicy< BACKEND > >::push_back ( value_type const &  value)
inline

This method appends the given element to the end of this multivector.

Parameters
xThe element to append.

◆ push_back() [2/2]

template<typename ... T, hydra::detail::Backend BACKEND>
template<typename Functor , typename Obj >
void hydra::multivector< hydra::thrust::tuple< T... >, hydra::detail::BackendPolicy< BACKEND > >::push_back ( Functor const &  functor,
Obj const &  obj 
)
inline

This method appends the given element to the end of this multivector.

Parameters
xThe element to append.
functorFunctor to convert the element to a value_type tuple

◆ rbegin() [1/8]

template<typename ... T, hydra::detail::Backend BACKEND>
template<typename Functor >
caster_reverse_iterator<Functor> hydra::multivector< hydra::thrust::tuple< T... >, hydra::detail::BackendPolicy< BACKEND > >::rbegin ( Functor const &  caster)
inline

◆ rbegin() [2/8]

template<typename ... T, hydra::detail::Backend BACKEND>
reverse_iterator hydra::multivector< hydra::thrust::tuple< T... >, hydra::detail::BackendPolicy< BACKEND > >::rbegin ( )
inline

◆ rbegin() [3/8]

template<typename ... T, hydra::detail::Backend BACKEND>
const_reverse_iterator hydra::multivector< hydra::thrust::tuple< T... >, hydra::detail::BackendPolicy< BACKEND > >::rbegin ( ) const
inline

◆ rbegin() [4/8]

template<typename ... T, hydra::detail::Backend BACKEND>
template<unsigned int I1, unsigned int I2, unsigned int ... IN>
columns_iterator< reverse_iterator_tuple, I1, I2,IN...> hydra::multivector< hydra::thrust::tuple< T... >, hydra::detail::BackendPolicy< BACKEND > >::rbegin ( placeholders::placeholder< I1 >  c1,
placeholders::placeholder< I2 >  c2,
placeholders::placeholder< IN > ...  cn 
)
inline

◆ rbegin() [5/8]

template<typename ... T, hydra::detail::Backend BACKEND>
template<unsigned int I>
hydra::thrust::tuple_element<I, reverse_iterator_tuple>::type hydra::multivector< hydra::thrust::tuple< T... >, hydra::detail::BackendPolicy< BACKEND > >::rbegin ( placeholders::placeholder< I >  )
inline

◆ rbegin() [6/8]

template<typename ... T, hydra::detail::Backend BACKEND>
template<typename Type >
hydra::thrust::tuple_element< detail::index_in_tuple<Type, tuple_type>::value , reverse_iterator_tuple>::type hydra::multivector< hydra::thrust::tuple< T... >, hydra::detail::BackendPolicy< BACKEND > >::rbegin ( )
inline

◆ rbegin() [7/8]

template<typename ... T, hydra::detail::Backend BACKEND>
template<unsigned int I1, unsigned int I2, unsigned int ... IN>
columns_iterator< const_reverse_iterator_tuple, I1, I2,IN...> hydra::multivector< hydra::thrust::tuple< T... >, hydra::detail::BackendPolicy< BACKEND > >::rbegin ( placeholders::placeholder< I1 >  c1,
placeholders::placeholder< I2 >  c2,
placeholders::placeholder< IN > ...  cn 
) const
inline

◆ rbegin() [8/8]

template<typename ... T, hydra::detail::Backend BACKEND>
template<unsigned int I>
hydra::thrust::tuple_element<I, const_reverse_iterator_tuple>::type hydra::multivector< hydra::thrust::tuple< T... >, hydra::detail::BackendPolicy< BACKEND > >::rbegin ( placeholders::placeholder< I >  ) const
inline

◆ rend() [1/8]

template<typename ... T, hydra::detail::Backend BACKEND>
template<typename Functor >
caster_reverse_iterator<Functor> hydra::multivector< hydra::thrust::tuple< T... >, hydra::detail::BackendPolicy< BACKEND > >::rend ( Functor const &  caster)
inline

◆ rend() [2/8]

template<typename ... T, hydra::detail::Backend BACKEND>
reverse_iterator hydra::multivector< hydra::thrust::tuple< T... >, hydra::detail::BackendPolicy< BACKEND > >::rend ( )
inline

◆ rend() [3/8]

template<typename ... T, hydra::detail::Backend BACKEND>
const_reverse_iterator hydra::multivector< hydra::thrust::tuple< T... >, hydra::detail::BackendPolicy< BACKEND > >::rend ( ) const
inline

◆ rend() [4/8]

template<typename ... T, hydra::detail::Backend BACKEND>
template<unsigned int I1, unsigned int I2, unsigned int ... IN>
columns_iterator< reverse_iterator_tuple, I1, I2,IN...> hydra::multivector< hydra::thrust::tuple< T... >, hydra::detail::BackendPolicy< BACKEND > >::rend ( placeholders::placeholder< I1 >  c1,
placeholders::placeholder< I2 >  c2,
placeholders::placeholder< IN > ...  cn 
)
inline

◆ rend() [5/8]

template<typename ... T, hydra::detail::Backend BACKEND>
template<unsigned int I>
hydra::thrust::tuple_element<I, reverse_iterator_tuple>::type hydra::multivector< hydra::thrust::tuple< T... >, hydra::detail::BackendPolicy< BACKEND > >::rend ( placeholders::placeholder< I >  )
inline

◆ rend() [6/8]

template<typename ... T, hydra::detail::Backend BACKEND>
template<typename Type >
hydra::thrust::tuple_element< detail::index_in_tuple<Type, tuple_type>::value , reverse_iterator_tuple >::type hydra::multivector< hydra::thrust::tuple< T... >, hydra::detail::BackendPolicy< BACKEND > >::rend ( )
inline

◆ rend() [7/8]

template<typename ... T, hydra::detail::Backend BACKEND>
template<unsigned int I1, unsigned int I2, unsigned int ... IN>
columns_iterator< const_reverse_iterator_tuple, I1, I2,IN...> hydra::multivector< hydra::thrust::tuple< T... >, hydra::detail::BackendPolicy< BACKEND > >::rend ( placeholders::placeholder< I1 >  c1,
placeholders::placeholder< I2 >  c2,
placeholders::placeholder< IN > ...  cn 
) const
inline

◆ rend() [8/8]

template<typename ... T, hydra::detail::Backend BACKEND>
template<unsigned int I>
hydra::thrust::tuple_element<I, const_reverse_iterator_tuple>::type hydra::multivector< hydra::thrust::tuple< T... >, hydra::detail::BackendPolicy< BACKEND > >::rend ( placeholders::placeholder< I >  ) const
inline

◆ reserve()

template<typename ... T, hydra::detail::Backend BACKEND>
void hydra::multivector< hydra::thrust::tuple< T... >, hydra::detail::BackendPolicy< BACKEND > >::reserve ( size_type  size)
inline

If n is less than or equal to capacity(), this call has no effect.

Otherwise, this method is a request for allocation of additional memory. If the request is successful, then capacity() is greater than or equal to n; otherwise, capacity() is unchanged. In either case, size() is unchanged.

Exceptions
std::length_errorIf n exceeds max_size().

◆ resize()

template<typename ... T, hydra::detail::Backend BACKEND>
void hydra::multivector< hydra::thrust::tuple< T... >, hydra::detail::BackendPolicy< BACKEND > >::resize ( size_type  new_size)
inline

Resizes this multivector to the specified number of elements.

Parameters
new_sizeNumber of elements this multivector should contain.
Exceptions
std::length_errorIf n exceeds max_size().

This method will resize this multivector to the specified number of elements. If the number is smaller than this multivector's current size this multivector is truncated, otherwise this multivector is extended and new default initialized elements are populated.

◆ shrink_to_fit()

template<typename ... T, hydra::detail::Backend BACKEND>
void hydra::multivector< hydra::thrust::tuple< T... >, hydra::detail::BackendPolicy< BACKEND > >::shrink_to_fit ( )
inline

This method shrinks the capacity of this multivector to exactly fit its elements.

◆ size()

template<typename ... T, hydra::detail::Backend BACKEND>
size_type hydra::multivector< hydra::thrust::tuple< T... >, hydra::detail::BackendPolicy< BACKEND > >::size ( ) const
inline

Returns the number of elements in this multivector.


The documentation for this class was generated from the following file: