koutil
Loading...
Searching...
No Matches
koutil::container::multi_vector< Types >::iterator< is_const > Class Template Reference

Nested iterator class for multi_vector. More...

#include <multi_vector.h>

Public Types

using value_type = std::conditional_t<is_const, const_value_ref_t, value_ref_t>
 
using const_value_type = const_value_ref_t
 
using reference = value_type
 
using difference_type = std::ptrdiff_t
 
using iterator_category = std::random_access_iterator_tag
 

Public Member Functions

 iterator ()=default
 
 iterator (const iterator &)=default
 
 iterator (iterator &&)=default
 
iteratoroperator= (const iterator &)=default
 
iteratoroperator= (iterator &&)=default
 
const_value_type operator* () const
 
value_type operator* ()
 
iteratoroperator++ ()
 
 operator iterator< true > () const
 
iterator operator++ (int)
 
iteratoroperator-- ()
 
iteratoroperator-- (int)
 
difference_type operator- (const iterator &other) const
 
iteratoroperator+= (difference_type n)
 
iteratoroperator-= (difference_type n)
 
iterator operator+ (difference_type n) const
 
iterator operator- (difference_type n) const
 
const_value_type operator[] (difference_type n) const
 
value_type operator[] (difference_type n)
 
bool operator== (const iterator &other) const =default
 
bool operator!= (const iterator &other) const =default
 
bool operator< (const iterator &other) const
 
bool operator<= (const iterator &other) const
 
bool operator> (const iterator &other) const
 
bool operator>= (const iterator &other) const
 

Private Types

using vec_ptr_t = std::conditional_t<is_const, const multi_vector*, multi_vector*>
 

Private Member Functions

 iterator (vec_ptr_t vec, std::size_t index)
 

Private Attributes

vec_ptr_t m_ref = nullptr
 
std::size_t m_index = 0
 

Friends

class iterator< true >
 
class multi_vector
 

Detailed Description

template<is_multi_vector_element... Types>
template<bool is_const>
requires (type::types_remove_t<type::types<T...>, void>::size != 0)
class koutil::container::multi_vector< Types >::iterator< is_const >

Nested iterator class for multi_vector.

Template Parameters
is_constWhether the iterator is const.
TThe types of elements stored in the multi_vector.
is_constWhether the iterator is const.

Member Typedef Documentation

◆ const_value_type

template<is_multi_vector_element... Types>
template<bool is_const>
using koutil::container::multi_vector< Types >::iterator< is_const >::const_value_type = const_value_ref_t

◆ difference_type

template<is_multi_vector_element... Types>
template<bool is_const>
using koutil::container::multi_vector< Types >::iterator< is_const >::difference_type = std::ptrdiff_t

◆ iterator_category

template<is_multi_vector_element... Types>
template<bool is_const>
using koutil::container::multi_vector< Types >::iterator< is_const >::iterator_category = std::random_access_iterator_tag

◆ reference

template<is_multi_vector_element... Types>
template<bool is_const>
using koutil::container::multi_vector< Types >::iterator< is_const >::reference = value_type

◆ value_type

template<is_multi_vector_element... Types>
template<bool is_const>
using koutil::container::multi_vector< Types >::iterator< is_const >::value_type = std::conditional_t<is_const, const_value_ref_t, value_ref_t>

◆ vec_ptr_t

template<is_multi_vector_element... Types>
template<bool is_const>
using koutil::container::multi_vector< Types >::iterator< is_const >::vec_ptr_t = std::conditional_t<is_const, const multi_vector*, multi_vector*>
private

Constructor & Destructor Documentation

◆ iterator() [1/4]

template<is_multi_vector_element... Types>
template<bool is_const>
koutil::container::multi_vector< Types >::iterator< is_const >::iterator ( )
default

◆ iterator() [2/4]

template<is_multi_vector_element... Types>
template<bool is_const>
koutil::container::multi_vector< Types >::iterator< is_const >::iterator ( const iterator< is_const > & )
default

◆ iterator() [3/4]

template<is_multi_vector_element... Types>
template<bool is_const>
koutil::container::multi_vector< Types >::iterator< is_const >::iterator ( iterator< is_const > && )
default

◆ iterator() [4/4]

template<is_multi_vector_element... Types>
template<bool is_const>
koutil::container::multi_vector< Types >::iterator< is_const >::iterator ( vec_ptr_t vec,
std::size_t index )
inlineprivate

Member Function Documentation

◆ operator iterator< true >()

template<is_multi_vector_element... Types>
template<bool is_const>
koutil::container::multi_vector< Types >::iterator< is_const >::operator iterator< true > ( ) const
inline

◆ operator!=()

template<is_multi_vector_element... Types>
template<bool is_const>
bool koutil::container::multi_vector< Types >::iterator< is_const >::operator!= ( const iterator< is_const > & other) const
default

◆ operator*() [1/2]

template<is_multi_vector_element... Types>
template<bool is_const>
value_type koutil::container::multi_vector< Types >::iterator< is_const >::operator* ( )
inline

◆ operator*() [2/2]

template<is_multi_vector_element... Types>
template<bool is_const>
const_value_type koutil::container::multi_vector< Types >::iterator< is_const >::operator* ( ) const
inline

◆ operator+()

template<is_multi_vector_element... Types>
template<bool is_const>
iterator koutil::container::multi_vector< Types >::iterator< is_const >::operator+ ( difference_type n) const
inline

◆ operator++() [1/2]

template<is_multi_vector_element... Types>
template<bool is_const>
iterator & koutil::container::multi_vector< Types >::iterator< is_const >::operator++ ( )
inline

◆ operator++() [2/2]

template<is_multi_vector_element... Types>
template<bool is_const>
iterator koutil::container::multi_vector< Types >::iterator< is_const >::operator++ ( int )
inline

◆ operator+=()

template<is_multi_vector_element... Types>
template<bool is_const>
iterator & koutil::container::multi_vector< Types >::iterator< is_const >::operator+= ( difference_type n)
inline

◆ operator-() [1/2]

template<is_multi_vector_element... Types>
template<bool is_const>
difference_type koutil::container::multi_vector< Types >::iterator< is_const >::operator- ( const iterator< is_const > & other) const
inline

◆ operator-() [2/2]

template<is_multi_vector_element... Types>
template<bool is_const>
iterator koutil::container::multi_vector< Types >::iterator< is_const >::operator- ( difference_type n) const
inline

◆ operator--() [1/2]

template<is_multi_vector_element... Types>
template<bool is_const>
iterator & koutil::container::multi_vector< Types >::iterator< is_const >::operator-- ( )
inline

◆ operator--() [2/2]

template<is_multi_vector_element... Types>
template<bool is_const>
iterator & koutil::container::multi_vector< Types >::iterator< is_const >::operator-- ( int )
inline

◆ operator-=()

template<is_multi_vector_element... Types>
template<bool is_const>
iterator & koutil::container::multi_vector< Types >::iterator< is_const >::operator-= ( difference_type n)
inline

◆ operator<()

template<is_multi_vector_element... Types>
template<bool is_const>
bool koutil::container::multi_vector< Types >::iterator< is_const >::operator< ( const iterator< is_const > & other) const
inline

◆ operator<=()

template<is_multi_vector_element... Types>
template<bool is_const>
bool koutil::container::multi_vector< Types >::iterator< is_const >::operator<= ( const iterator< is_const > & other) const
inline

◆ operator=() [1/2]

template<is_multi_vector_element... Types>
template<bool is_const>
iterator & koutil::container::multi_vector< Types >::iterator< is_const >::operator= ( const iterator< is_const > & )
default

◆ operator=() [2/2]

template<is_multi_vector_element... Types>
template<bool is_const>
iterator & koutil::container::multi_vector< Types >::iterator< is_const >::operator= ( iterator< is_const > && )
default

◆ operator==()

template<is_multi_vector_element... Types>
template<bool is_const>
bool koutil::container::multi_vector< Types >::iterator< is_const >::operator== ( const iterator< is_const > & other) const
default

◆ operator>()

template<is_multi_vector_element... Types>
template<bool is_const>
bool koutil::container::multi_vector< Types >::iterator< is_const >::operator> ( const iterator< is_const > & other) const
inline

◆ operator>=()

template<is_multi_vector_element... Types>
template<bool is_const>
bool koutil::container::multi_vector< Types >::iterator< is_const >::operator>= ( const iterator< is_const > & other) const
inline

◆ operator[]() [1/2]

template<is_multi_vector_element... Types>
template<bool is_const>
value_type koutil::container::multi_vector< Types >::iterator< is_const >::operator[] ( difference_type n)
inline

◆ operator[]() [2/2]

template<is_multi_vector_element... Types>
template<bool is_const>
const_value_type koutil::container::multi_vector< Types >::iterator< is_const >::operator[] ( difference_type n) const
inline

Friends And Related Symbol Documentation

◆ iterator< true >

template<is_multi_vector_element... Types>
template<bool is_const>
friend class iterator< true >
friend

◆ multi_vector

template<is_multi_vector_element... Types>
template<bool is_const>
friend class multi_vector
friend

Member Data Documentation

◆ m_index

template<is_multi_vector_element... Types>
template<bool is_const>
std::size_t koutil::container::multi_vector< Types >::iterator< is_const >::m_index = 0
private

◆ m_ref

template<is_multi_vector_element... Types>
template<bool is_const>
vec_ptr_t koutil::container::multi_vector< Types >::iterator< is_const >::m_ref = nullptr
private

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