7#ifndef DUNE_FUNCTIONS_COMMON_OVERFLOWARRAY_HH
8#define DUNE_FUNCTIONS_COMMON_OVERFLOWARRAY_HH
14#include <initializer_list>
16#include <dune/common/genericiterator.hh>
46template<
class BA, std::
size_t maxSize = std::tuple_size_v<BA>>
50 static constexpr std::size_t baseSize = std::tuple_size_v<BA>;
61 using iterator = Dune::GenericIterator<OverflowArray, value_type>;
62 using const_iterator = Dune::GenericIterator<const OverflowArray, const value_type>;
65 using OverflowBuffer = std::array<
value_type, maxSize-baseSize>;
74 std::copy_n(l.begin(), size_,
begin());
81 if ((*
this)[i] != other[i])
110 (*this)[size_++] = t;
129 (*
this)[i+1] = (*this)[i];
160 return BaseArray::operator[](i);
161 return overflow_[i-baseSize];
171 return BaseArray::operator[](i);
172 return overflow_[i-baseSize];
190 return (*
this)[
size()-1];
196 return (*
this)[
size()-1];
221 return hash_range(v.begin(), v.end());
226 for (
const auto& ci : c)
232 OverflowBuffer overflow_;
Definition polynomial.hh:18
A dynamically sized array-like class with overflow.
Definition overflowarray.hh:49
const value_type & const_reference
Definition overflowarray.hh:57
value_type & reference
Definition overflowarray.hh:56
const_iterator end() const
Returns a const_iterator pointing to the end of the OverflowArray.
Definition overflowarray.hh:149
bool operator==(const OverflowArray &other) const
Definition overflowarray.hh:77
friend std::size_t hash_value(const OverflowArray &v) noexcept
Compute hash value.
Definition overflowarray.hh:220
void push_back(const value_type &t)
Appends an element to the end of the OverflowArray,.
Definition overflowarray.hh:108
friend std::ostream & operator<<(std::ostream &s, const OverflowArray &c)
Write container to an output stream.
Definition overflowarray.hh:225
iterator begin()
Returns a iterator pointing to the beginning of the OverflowArray.
Definition overflowarray.hh:134
bool empty() const
Returns true if OverflowArray has no elements.
Definition overflowarray.hh:205
size_type size() const
Returns number of elements in the OverflowArray.
Definition overflowarray.hh:200
typename BaseArray::value_type value_type
Definition overflowarray.hh:55
void pop_back()
Erases the last element of the OverflowArray, O(1) time.
Definition overflowarray.hh:114
Dune::GenericIterator< OverflowArray, value_type > iterator
Definition overflowarray.hh:61
const_iterator begin() const
Returns a const_iterator pointing to the beginning of the OverflowArray.
Definition overflowarray.hh:139
std::ptrdiff_t difference_type
Definition overflowarray.hh:59
BA BaseArray
Definition overflowarray.hh:53
static constexpr size_type capacity()
Returns the capacity of the OverflowArray.
Definition overflowarray.hh:210
static constexpr size_type max_size()
Returns the maximum length of the OverflowArray.
Definition overflowarray.hh:215
const_reference front() const
Returns const reference to first element of OverflowArray.
Definition overflowarray.hh:182
void clear()
Erases all elements.
Definition overflowarray.hh:87
iterator end()
Returns an iterator pointing to the end of the OverflowArray.
Definition overflowarray.hh:144
std::size_t size_type
Definition overflowarray.hh:60
void resize(size_type n)
Specifies a new size for the OverflowArray.
Definition overflowarray.hh:97
value_type * pointer
Definition overflowarray.hh:58
Dune::GenericIterator< const OverflowArray, const value_type > const_iterator
Definition overflowarray.hh:62
const_reference back() const
Returns const reference to last element of OverflowArray.
Definition overflowarray.hh:194
OverflowArray(const std::initializer_list< value_type > &l)
Definition overflowarray.hh:71
reference back()
Returns reference to last element of OverflowArray.
Definition overflowarray.hh:188
void push_front(const value_type &t)
Inserts an element to the begin of the OverflowArray,.
Definition overflowarray.hh:126
reference front()
Returns reference to first element of OverflowArray.
Definition overflowarray.hh:176
reference operator[](size_type i)
Returns reference to the i'th element.
Definition overflowarray.hh:154