Loading...
Searching...
No Matches
Public Types | Public Member Functions | Private Types | List of all members
vector< T > Class Template Reference

vector<bbm::reference> with casting on the inspectors and iterators More...

#include <vector_util.h>

Inherits vector< bbm::reference< T > >.

Public Types

using value_type = typename base_type::value_type
 
using allocator_type = typename base_type::allocator_type
 
using size_type = typename base_type::size_type
 
using difference_type = typename base_type::difference_type
 
using reference = T
 
using const_reference = bbm::add_const_t< T >
 
using pointer = typename base_type::pointer
 
using const_pointer = typename base_type::const_pointer
 
using iterator = cast_itr< T, typename base_type::iterator >
 
using const_iterator = cast_itr< bbm::add_const_t< T >, typename base_type::const_iterator >
 
using reverse_iterator = cast_itr< T, typename base_type::reverse_iterator >
 
using const_reverse_iterator = cast_itr< bbm::add_const_t< T >, typename base_type::const_reverse_iterator >
 

Public Member Functions

template<typename U >
requires concepts::assignable_to<U, bbm::reference<T>>
bbm::vector< T > & operator= (const bbm::vector< U > &src)
 Casting Assignemnt.
 
template<typename R >
void push_back (R &&a)
 push_back reference encapsulation
 
Auto-casting dereference methods
reference at (size_type idx)
 
const_reference at (size_type idx) const
 
reference operator[] (size_type idx)
 
const_reference operator[] (size_type idx) const
 
reference front (void)
 
const_reference front (void) const
 
reference back (void)
 
const_reference back (void) const
 
Auto-casting iterators
iterator begin (void)
 
const_iterator begin (void) const
 
iterator rbegin (void)
 
const_iterator rbegin (void) const
 
const_iterator cbegin (void) const
 
iterator end (void)
 
const_iterator end (void) const
 
iterator rend (void)
 
const_iterator rend (void) const
 
const_iterator cend (void) const
 
Override insert to use emplace
constexpr iterator insert (const_iterator pos, value_type &&val)
 
constexpr iterator insert (const_iterator pos, size_t count, value_type &&val)
 
template<typename Itr >
constexpr iterator insert (const_iterator pos, Itr inputBegin, Itr inputEnd)
 

Private Types

using base_type = std::vector< bbm::reference< T > >
 

Detailed Description

template<typename T>
requires std::is_reference_v<T>
class bbm::vector< T >

vector<bbm::reference> with casting on the inspectors and iterators

The problem with vector<bbm::reference> is that the result of any operation still needs to be manually cast when calling methods on the result. This wrapper class will automatically do the casting.

If not a reference, bbm::vector will be equivalent to a std::vector

Member Typedef Documentation

◆ allocator_type

using allocator_type = typename base_type::allocator_type

◆ base_type

using base_type = std::vector<bbm::reference<T> >
private

◆ const_iterator

using const_iterator = cast_itr<bbm::add_const_t<T>, typename base_type::const_iterator>

◆ const_pointer

using const_pointer = typename base_type::const_pointer

◆ const_reference

◆ const_reverse_iterator

using const_reverse_iterator = cast_itr<bbm::add_const_t<T>, typename base_type::const_reverse_iterator>

◆ difference_type

using difference_type = typename base_type::difference_type

◆ iterator

using iterator = cast_itr<T, typename base_type::iterator>

◆ pointer

using pointer = typename base_type::pointer

◆ reference

using reference = T

◆ reverse_iterator

using reverse_iterator = cast_itr<T, typename base_type::reverse_iterator>

◆ size_type

using size_type = typename base_type::size_type

◆ value_type

using value_type = typename base_type::value_type

Member Function Documentation

◆ at() [1/2]

reference at ( size_type  idx)
inline

◆ at() [2/2]

const_reference at ( size_type  idx) const
inline

◆ back() [1/2]

reference back ( void  )
inline

◆ back() [2/2]

const_reference back ( void  ) const
inline

◆ begin() [1/2]

iterator begin ( void  )
inline

◆ begin() [2/2]

const_iterator begin ( void  ) const
inline

◆ cbegin()

const_iterator cbegin ( void  ) const
inline

◆ cend()

const_iterator cend ( void  ) const
inline

◆ end() [1/2]

iterator end ( void  )
inline

◆ end() [2/2]

const_iterator end ( void  ) const
inline

◆ front() [1/2]

reference front ( void  )
inline

◆ front() [2/2]

const_reference front ( void  ) const
inline

◆ insert() [1/3]

constexpr iterator insert ( const_iterator  pos,
Itr  inputBegin,
Itr  inputEnd 
)
inlineconstexpr

◆ insert() [2/3]

constexpr iterator insert ( const_iterator  pos,
size_t  count,
value_type &&  val 
)
inlineconstexpr

◆ insert() [3/3]

constexpr iterator insert ( const_iterator  pos,
value_type &&  val 
)
inlineconstexpr

◆ operator=()

bbm::vector< T > & operator= ( const bbm::vector< U > &  src)
inline

Casting Assignemnt.

◆ operator[]() [1/2]

reference operator[] ( size_type  idx)
inline

◆ operator[]() [2/2]

const_reference operator[] ( size_type  idx) const
inline

◆ push_back()

void push_back ( R &&  a)
inline

push_back reference encapsulation

◆ rbegin() [1/2]

iterator rbegin ( void  )
inline

◆ rbegin() [2/2]

const_iterator rbegin ( void  ) const
inline

◆ rend() [1/2]

iterator rend ( void  )
inline

◆ rend() [2/2]

const_iterator rend ( void  ) const
inline

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