MRPT  1.9.9
mrpt::containers::vector_with_small_size_optimization< VAL, small_size, alignment > Class Template Reference

Detailed Description

template<typename VAL, size_t small_size, size_t alignment = 16>
class mrpt::containers::vector_with_small_size_optimization< VAL, small_size, alignment >

Container that transparently and dynamically switches between a std::array and std::vector.

Used to avoid heap allocations with small vectors.

Note
In #include <mrpt/containers/vector_with_small_size_optimization.h>

Definition at line 34 of file vector_with_small_size_optimization.h.

#include <mrpt/containers/vector_with_small_size_optimization.h>

Inheritance diagram for mrpt::containers::vector_with_small_size_optimization< VAL, small_size, alignment >:

Classes

class  iteratorImpl
 

Public Types

using value_type = T
 
using reference = T &
 
using const_reference = const T &
 
using difference_type = typename large_vec::difference_type
 
using size_type = typename large_vec::size_type
 
using iterator = iteratorImpl< VAL, VAL *, VAL & >
 
using const_iterator = iteratorImpl< VAL, const VAL *, const VAL & >
 

Public Member Functions

void resize (size_type n)
 
size_t size () const
 
bool empty () const
 
reference operator[] (size_type n)
 
const_reference operator[] (size_type n) const
 
const_reference back () const
 
reference back ()
 
const_reference front () const
 
reference front ()
 
void swap (vector &x)
 
iterator begin () noexcept
 
const_iterator begin () const noexcept
 
iterator end () noexcept
 
const_iterator end () const noexcept
 

Private Types

using T = std::conditional_t< std::is_same_v< VAL, bool >, UnspecializedBool, VAL >
 
using ALLOC = mrpt::aligned_allocator_cpp11< T >
 
using vector = vector_with_small_size_optimization< VAL, small_size, alignment >
 
using large_vec = std::vector< T, ALLOC >
 
using small_array = std::array< T, small_size >
 

Private Attributes

large_vec m_v
 
small_array m_a
 
bool m_is_small = true
 
size_t m_size = 0
 

Member Typedef Documentation

◆ ALLOC

template<typename VAL, size_t small_size, size_t alignment = 16>
using mrpt::containers::vector_with_small_size_optimization< VAL, small_size, alignment >::ALLOC = mrpt::aligned_allocator_cpp11<T>
private

Definition at line 39 of file vector_with_small_size_optimization.h.

◆ const_iterator

template<typename VAL, size_t small_size, size_t alignment = 16>
using mrpt::containers::vector_with_small_size_optimization< VAL, small_size, alignment >::const_iterator = iteratorImpl<VAL, const VAL*, const VAL&>

Definition at line 134 of file vector_with_small_size_optimization.h.

◆ const_reference

template<typename VAL, size_t small_size, size_t alignment = 16>
using mrpt::containers::vector_with_small_size_optimization< VAL, small_size, alignment >::const_reference = const T&

Definition at line 53 of file vector_with_small_size_optimization.h.

◆ difference_type

template<typename VAL, size_t small_size, size_t alignment = 16>
using mrpt::containers::vector_with_small_size_optimization< VAL, small_size, alignment >::difference_type = typename large_vec::difference_type

Definition at line 54 of file vector_with_small_size_optimization.h.

◆ iterator

template<typename VAL, size_t small_size, size_t alignment = 16>
using mrpt::containers::vector_with_small_size_optimization< VAL, small_size, alignment >::iterator = iteratorImpl<VAL, VAL*, VAL&>

Definition at line 133 of file vector_with_small_size_optimization.h.

◆ large_vec

template<typename VAL, size_t small_size, size_t alignment = 16>
using mrpt::containers::vector_with_small_size_optimization< VAL, small_size, alignment >::large_vec = std::vector<T, ALLOC>
private

Definition at line 42 of file vector_with_small_size_optimization.h.

◆ reference

template<typename VAL, size_t small_size, size_t alignment = 16>
using mrpt::containers::vector_with_small_size_optimization< VAL, small_size, alignment >::reference = T&

Definition at line 52 of file vector_with_small_size_optimization.h.

◆ size_type

template<typename VAL, size_t small_size, size_t alignment = 16>
using mrpt::containers::vector_with_small_size_optimization< VAL, small_size, alignment >::size_type = typename large_vec::size_type

Definition at line 55 of file vector_with_small_size_optimization.h.

◆ small_array

template<typename VAL, size_t small_size, size_t alignment = 16>
using mrpt::containers::vector_with_small_size_optimization< VAL, small_size, alignment >::small_array = std::array<T, small_size>
private

Definition at line 43 of file vector_with_small_size_optimization.h.

◆ T

template<typename VAL, size_t small_size, size_t alignment = 16>
using mrpt::containers::vector_with_small_size_optimization< VAL, small_size, alignment >::T = std::conditional_t<std::is_same_v<VAL, bool>, UnspecializedBool, VAL>
private

Definition at line 38 of file vector_with_small_size_optimization.h.

◆ value_type

template<typename VAL, size_t small_size, size_t alignment = 16>
using mrpt::containers::vector_with_small_size_optimization< VAL, small_size, alignment >::value_type = T

Definition at line 51 of file vector_with_small_size_optimization.h.

◆ vector

template<typename VAL, size_t small_size, size_t alignment = 16>
using mrpt::containers::vector_with_small_size_optimization< VAL, small_size, alignment >::vector = vector_with_small_size_optimization<VAL, small_size, alignment>
private

Definition at line 41 of file vector_with_small_size_optimization.h.

Member Function Documentation

◆ back() [1/2]

template<typename VAL, size_t small_size, size_t alignment = 16>
const_reference mrpt::containers::vector_with_small_size_optimization< VAL, small_size, alignment >::back ( ) const
inline

Definition at line 167 of file vector_with_small_size_optimization.h.

Referenced by mrpt::math::CVectorDynamic< KFTYPE >::push_back().

Here is the caller graph for this function:

◆ back() [2/2]

template<typename VAL, size_t small_size, size_t alignment = 16>
reference mrpt::containers::vector_with_small_size_optimization< VAL, small_size, alignment >::back ( )
inline

Definition at line 171 of file vector_with_small_size_optimization.h.

◆ begin() [1/2]

template<typename VAL, size_t small_size, size_t alignment = 16>
iterator mrpt::containers::vector_with_small_size_optimization< VAL, small_size, alignment >::begin ( )
inlinenoexcept

Definition at line 203 of file vector_with_small_size_optimization.h.

Referenced by mrpt::math::CVectorDynamic< KFTYPE >::begin(), mrpt::math::CMatrixDynamic< KFTYPE >::begin(), mrpt::math::CVectorDynamic< KFTYPE >::cbegin(), and mrpt::math::CMatrixDynamic< KFTYPE >::cbegin().

Here is the caller graph for this function:

◆ begin() [2/2]

template<typename VAL, size_t small_size, size_t alignment = 16>
const_iterator mrpt::containers::vector_with_small_size_optimization< VAL, small_size, alignment >::begin ( ) const
inlinenoexcept

Definition at line 204 of file vector_with_small_size_optimization.h.

◆ empty()

template<typename VAL, size_t small_size, size_t alignment = 16>
bool mrpt::containers::vector_with_small_size_optimization< VAL, small_size, alignment >::empty ( ) const
inline

Definition at line 158 of file vector_with_small_size_optimization.h.

Referenced by mrpt::math::CVectorDynamic< KFTYPE >::empty().

Here is the caller graph for this function:

◆ end() [1/2]

template<typename VAL, size_t small_size, size_t alignment = 16>
iterator mrpt::containers::vector_with_small_size_optimization< VAL, small_size, alignment >::end ( )
inlinenoexcept

Definition at line 209 of file vector_with_small_size_optimization.h.

Referenced by mrpt::math::CVectorDynamic< KFTYPE >::cend(), mrpt::math::CMatrixDynamic< KFTYPE >::cend(), mrpt::math::CVectorDynamic< KFTYPE >::end(), and mrpt::math::CMatrixDynamic< KFTYPE >::end().

Here is the caller graph for this function:

◆ end() [2/2]

template<typename VAL, size_t small_size, size_t alignment = 16>
const_iterator mrpt::containers::vector_with_small_size_optimization< VAL, small_size, alignment >::end ( ) const
inlinenoexcept

Definition at line 213 of file vector_with_small_size_optimization.h.

◆ front() [1/2]

template<typename VAL, size_t small_size, size_t alignment = 16>
const_reference mrpt::containers::vector_with_small_size_optimization< VAL, small_size, alignment >::front ( ) const
inline

Definition at line 173 of file vector_with_small_size_optimization.h.

◆ front() [2/2]

template<typename VAL, size_t small_size, size_t alignment = 16>
reference mrpt::containers::vector_with_small_size_optimization< VAL, small_size, alignment >::front ( )
inline

Definition at line 177 of file vector_with_small_size_optimization.h.

◆ operator[]() [1/2]

template<typename VAL, size_t small_size, size_t alignment = 16>
reference mrpt::containers::vector_with_small_size_optimization< VAL, small_size, alignment >::operator[] ( size_type  n)
inline

Definition at line 160 of file vector_with_small_size_optimization.h.

◆ operator[]() [2/2]

template<typename VAL, size_t small_size, size_t alignment = 16>
const_reference mrpt::containers::vector_with_small_size_optimization< VAL, small_size, alignment >::operator[] ( size_type  n) const
inline

Definition at line 162 of file vector_with_small_size_optimization.h.

◆ resize()

template<typename VAL, size_t small_size, size_t alignment = 16>
void mrpt::containers::vector_with_small_size_optimization< VAL, small_size, alignment >::resize ( size_type  n)
inline

Definition at line 136 of file vector_with_small_size_optimization.h.

Referenced by mrpt::math::CVectorDynamic< KFTYPE >::push_back(), and mrpt::math::CVectorDynamic< KFTYPE >::realloc().

Here is the caller graph for this function:

◆ size()

template<typename VAL, size_t small_size, size_t alignment = 16>
size_t mrpt::containers::vector_with_small_size_optimization< VAL, small_size, alignment >::size ( ) const
inline

◆ swap()

template<typename VAL, size_t small_size, size_t alignment = 16>
void mrpt::containers::vector_with_small_size_optimization< VAL, small_size, alignment >::swap ( vector x)
inline

Definition at line 179 of file vector_with_small_size_optimization.h.

Referenced by mrpt::math::CMatrixDynamic< KFTYPE >::realloc(), mrpt::math::CVectorDynamic< KFTYPE >::swap(), and mrpt::math::CMatrixDynamic< KFTYPE >::swap().

Here is the caller graph for this function:

Member Data Documentation

◆ m_a

◆ m_is_small

◆ m_size

◆ m_v




Page generated by Doxygen 1.8.14 for MRPT 1.9.9 Git: 8fe78517f Sun Jul 14 19:43:28 2019 +0200 at lun oct 28 02:10:00 CET 2019