dune-functions 2.9.0
Public Types | Public Member Functions | Static Public Member Functions | Friends | List of all members
Dune::Functions::OverflowArray< BA, maxSize > Class Template Reference

A dynamically sized array-like class with overflow. More...

#include <dune/functions/common/overflowarray.hh>

Inheritance diagram for Dune::Functions::OverflowArray< BA, maxSize >:
Inheritance graph

Public Types

using BaseArray = BA
 
using value_type = typename BaseArray::value_type
 
using reference = value_type &
 
using const_reference = const value_type &
 
using pointer = value_type *
 
using difference_type = std::ptrdiff_t
 
using size_type = std::size_t
 
using iterator = Dune::GenericIterator< OverflowArray, value_type >
 
using const_iterator = Dune::GenericIterator< const OverflowArray, const value_type >
 

Public Member Functions

 OverflowArray ()=default
 
 OverflowArray (const std::initializer_list< value_type > &l)
 
bool operator== (const OverflowArray &other) const
 
void clear ()
 Erases all elements. More...
 
void resize (size_type n)
 Specifies a new size for the OverflowArray. More...
 
void push_back (const value_type &t)
 Appends an element to the end of the OverflowArray,. More...
 
void pop_back ()
 Erases the last element of the OverflowArray, O(1) time. More...
 
void push_front (const value_type &t)
 Inserts an element to the begin of the OverflowArray,. More...
 
iterator begin ()
 Returns a iterator pointing to the beginning of the OverflowArray. More...
 
const_iterator begin () const
 Returns a const_iterator pointing to the beginning of the OverflowArray. More...
 
iterator end ()
 Returns an iterator pointing to the end of the OverflowArray. More...
 
const_iterator end () const
 Returns a const_iterator pointing to the end of the OverflowArray. More...
 
reference operator[] (size_type i)
 Returns reference to the i'th element. More...
 
const_reference operator[] (size_type i) const
 Returns a const reference to the i'th element. More...
 
reference front ()
 Returns reference to first element of OverflowArray. More...
 
const_reference front () const
 Returns const reference to first element of OverflowArray. More...
 
reference back ()
 Returns reference to last element of OverflowArray. More...
 
const_reference back () const
 Returns const reference to last element of OverflowArray. More...
 
size_type size () const
 Returns number of elements in the OverflowArray. More...
 
bool empty () const
 Returns true if OverflowArray has no elements. More...
 

Static Public Member Functions

static constexpr size_type capacity ()
 Returns the capacity of the OverflowArray. More...
 
static constexpr size_type max_size ()
 Returns the maximum length of the OverflowArray. More...
 

Friends

std::size_t hash_value (const OverflowArray &v) noexcept
 Compute hash value. More...
 
std::ostream & operator<< (std::ostream &s, const OverflowArray &c)
 Write container to an output stream. More...
 

Detailed Description

template<class BA, std::size_t maxSize = std::tuple_size_v<BA>>
class Dune::Functions::OverflowArray< BA, maxSize >

A dynamically sized array-like class with overflow.

Template Parameters
BAType of base array
maxSizeMaximal size of OverflowArray

This class publicly inherits from a statically sized array-like base class BA and extends it by an overflow such that a total capacity of maxSize is available. Within this bound the size is managed dynamically.

Potential usecase: If you want to construct a statically sized array but need dynamic resizing while building it, you can use an OverflowArray<std::array<T,finalSize>, ...> and cast the result to the base class type.

Similar to Dune::ReservedVector this uses a std::array internally with the following implications: Entries must be default-constructible. The whole capacity will always be filled with entries, even if size<capacity. Entries are only destructed when the OverflowArray is destructed - not when shrinking or clearing it.

Member Typedef Documentation

◆ BaseArray

template<class BA , std::size_t maxSize = std::tuple_size_v<BA>>
using Dune::Functions::OverflowArray< BA, maxSize >::BaseArray = BA

◆ const_iterator

template<class BA , std::size_t maxSize = std::tuple_size_v<BA>>
using Dune::Functions::OverflowArray< BA, maxSize >::const_iterator = Dune::GenericIterator<const OverflowArray, const value_type>

◆ const_reference

template<class BA , std::size_t maxSize = std::tuple_size_v<BA>>
using Dune::Functions::OverflowArray< BA, maxSize >::const_reference = const value_type&

◆ difference_type

template<class BA , std::size_t maxSize = std::tuple_size_v<BA>>
using Dune::Functions::OverflowArray< BA, maxSize >::difference_type = std::ptrdiff_t

◆ iterator

template<class BA , std::size_t maxSize = std::tuple_size_v<BA>>
using Dune::Functions::OverflowArray< BA, maxSize >::iterator = Dune::GenericIterator<OverflowArray, value_type>

◆ pointer

template<class BA , std::size_t maxSize = std::tuple_size_v<BA>>
using Dune::Functions::OverflowArray< BA, maxSize >::pointer = value_type*

◆ reference

template<class BA , std::size_t maxSize = std::tuple_size_v<BA>>
using Dune::Functions::OverflowArray< BA, maxSize >::reference = value_type&

◆ size_type

template<class BA , std::size_t maxSize = std::tuple_size_v<BA>>
using Dune::Functions::OverflowArray< BA, maxSize >::size_type = std::size_t

◆ value_type

template<class BA , std::size_t maxSize = std::tuple_size_v<BA>>
using Dune::Functions::OverflowArray< BA, maxSize >::value_type = typename BaseArray::value_type

Constructor & Destructor Documentation

◆ OverflowArray() [1/2]

template<class BA , std::size_t maxSize = std::tuple_size_v<BA>>
Dune::Functions::OverflowArray< BA, maxSize >::OverflowArray ( )
default

◆ OverflowArray() [2/2]

template<class BA , std::size_t maxSize = std::tuple_size_v<BA>>
Dune::Functions::OverflowArray< BA, maxSize >::OverflowArray ( const std::initializer_list< value_type > &  l)
inline

Member Function Documentation

◆ back() [1/2]

template<class BA , std::size_t maxSize = std::tuple_size_v<BA>>
reference Dune::Functions::OverflowArray< BA, maxSize >::back ( )
inline

Returns reference to last element of OverflowArray.

◆ back() [2/2]

template<class BA , std::size_t maxSize = std::tuple_size_v<BA>>
const_reference Dune::Functions::OverflowArray< BA, maxSize >::back ( ) const
inline

Returns const reference to last element of OverflowArray.

◆ begin() [1/2]

template<class BA , std::size_t maxSize = std::tuple_size_v<BA>>
iterator Dune::Functions::OverflowArray< BA, maxSize >::begin ( )
inline

Returns a iterator pointing to the beginning of the OverflowArray.

◆ begin() [2/2]

template<class BA , std::size_t maxSize = std::tuple_size_v<BA>>
const_iterator Dune::Functions::OverflowArray< BA, maxSize >::begin ( ) const
inline

Returns a const_iterator pointing to the beginning of the OverflowArray.

◆ capacity()

template<class BA , std::size_t maxSize = std::tuple_size_v<BA>>
static constexpr size_type Dune::Functions::OverflowArray< BA, maxSize >::capacity ( )
inlinestaticconstexpr

Returns the capacity of the OverflowArray.

◆ clear()

template<class BA , std::size_t maxSize = std::tuple_size_v<BA>>
void Dune::Functions::OverflowArray< BA, maxSize >::clear ( )
inline

Erases all elements.

◆ empty()

template<class BA , std::size_t maxSize = std::tuple_size_v<BA>>
bool Dune::Functions::OverflowArray< BA, maxSize >::empty ( ) const
inline

Returns true if OverflowArray has no elements.

◆ end() [1/2]

template<class BA , std::size_t maxSize = std::tuple_size_v<BA>>
iterator Dune::Functions::OverflowArray< BA, maxSize >::end ( )
inline

Returns an iterator pointing to the end of the OverflowArray.

◆ end() [2/2]

template<class BA , std::size_t maxSize = std::tuple_size_v<BA>>
const_iterator Dune::Functions::OverflowArray< BA, maxSize >::end ( ) const
inline

Returns a const_iterator pointing to the end of the OverflowArray.

◆ front() [1/2]

template<class BA , std::size_t maxSize = std::tuple_size_v<BA>>
reference Dune::Functions::OverflowArray< BA, maxSize >::front ( )
inline

Returns reference to first element of OverflowArray.

◆ front() [2/2]

template<class BA , std::size_t maxSize = std::tuple_size_v<BA>>
const_reference Dune::Functions::OverflowArray< BA, maxSize >::front ( ) const
inline

Returns const reference to first element of OverflowArray.

◆ max_size()

template<class BA , std::size_t maxSize = std::tuple_size_v<BA>>
static constexpr size_type Dune::Functions::OverflowArray< BA, maxSize >::max_size ( )
inlinestaticconstexpr

Returns the maximum length of the OverflowArray.

◆ operator==()

template<class BA , std::size_t maxSize = std::tuple_size_v<BA>>
bool Dune::Functions::OverflowArray< BA, maxSize >::operator== ( const OverflowArray< BA, maxSize > &  other) const
inline

◆ operator[]() [1/2]

template<class BA , std::size_t maxSize = std::tuple_size_v<BA>>
reference Dune::Functions::OverflowArray< BA, maxSize >::operator[] ( size_type  i)
inline

Returns reference to the i'th element.

◆ operator[]() [2/2]

template<class BA , std::size_t maxSize = std::tuple_size_v<BA>>
const_reference Dune::Functions::OverflowArray< BA, maxSize >::operator[] ( size_type  i) const
inline

Returns a const reference to the i'th element.

◆ pop_back()

template<class BA , std::size_t maxSize = std::tuple_size_v<BA>>
void Dune::Functions::OverflowArray< BA, maxSize >::pop_back ( )
inline

Erases the last element of the OverflowArray, O(1) time.

◆ push_back()

template<class BA , std::size_t maxSize = std::tuple_size_v<BA>>
void Dune::Functions::OverflowArray< BA, maxSize >::push_back ( const value_type t)
inline

Appends an element to the end of the OverflowArray,.

The new size must not exceed max_size(). This is an O(1) operation.

◆ push_front()

template<class BA , std::size_t maxSize = std::tuple_size_v<BA>>
void Dune::Functions::OverflowArray< BA, maxSize >::push_front ( const value_type t)
inline

Inserts an element to the begin of the OverflowArray,.

The new size must not exceed max_size(). This is an O(size()) operation.

◆ resize()

template<class BA , std::size_t maxSize = std::tuple_size_v<BA>>
void Dune::Functions::OverflowArray< BA, maxSize >::resize ( size_type  n)
inline

Specifies a new size for the OverflowArray.

The new size must not exceed max_size(). This is an O(1) operation.

◆ size()

template<class BA , std::size_t maxSize = std::tuple_size_v<BA>>
size_type Dune::Functions::OverflowArray< BA, maxSize >::size ( ) const
inline

Returns number of elements in the OverflowArray.

Friends And Related Function Documentation

◆ hash_value

template<class BA , std::size_t maxSize = std::tuple_size_v<BA>>
std::size_t hash_value ( const OverflowArray< BA, maxSize > &  v)
friend

Compute hash value.

◆ operator<<

template<class BA , std::size_t maxSize = std::tuple_size_v<BA>>
std::ostream & operator<< ( std::ostream &  s,
const OverflowArray< BA, maxSize > &  c 
)
friend

Write container to an output stream.


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