Aleph-w 3.0
A C++ Library for Data Structures and Algorithms
Loading...
Searching...
No Matches
Aleph::ArrayQueue< T > Class Template Reference

Queue implemented with a single dynamic array. More...

#include <tpl_arrayQueue.H>

Inheritance diagram for Aleph::ArrayQueue< T >:
[legend]
Collaboration diagram for Aleph::ArrayQueue< T >:
[legend]

Classes

struct  Iterator
 Simple iterator on elements of a queue. More...
 

Public Member Functions

void swap (ArrayQueue &q) noexcept
 Swap this with q
 
 ArrayQueue (const size_t sz=8)
 Construct a queue with capacity sz
 
 ArrayQueue (const ArrayQueue &q)
 Copy constructor.
 
 ArrayQueue (ArrayQueue &&q) noexcept
 Move constructor.
 
template<template< typename > class List>
 ArrayQueue (const List< T > &l)
 
template<class It >
 ArrayQueue (It b, It e)
 
 ArrayQueue (std::initializer_list< T > l)
 
ArrayQueueoperator= (const ArrayQueue &q)
 Copy assign.
 
ArrayQueueoperator= (ArrayQueue &&q)
 Move assign.
 
Tput (const T &item)
 Copy and put an item in the queue.
 
Tput (T &&item)
 
Tappend (const T &item)
 
Tappend (T &&item)
 
Tinsert (const T &item)
 
Tinsert (T &&item)
 
Tputn (size_t sz)
 Put in constant time sz empty entries to the stack.
 
T get ()
 Remove the oldest item of the queue and return a copy.
 
Tgetn (const size_t i)
 Remove the i oldest items of the queue.
 
Tfront (const size_t i=0) const
 Return the i-th oldest item of the queue.
 
Trear (const size_t i=0) const
 Return the i-th youngest item of the queue.
 
template<class Operation >
bool traverse (Operation &operation)
 Traverse all the elements from the youngest to the oldest and execute operation on each on them.
 
template<class Operation >
bool traverse (Operation &operation) const
 
template<class Operation >
bool traverse (Operation &&operation) const
 
template<class Operation >
bool traverse (Operation &&operation)
 
- Public Member Functions inherited from Aleph::MemArray< T >
Tget_ptr () const noexcept
 Return the current base of array.
 
const size_tget_dim () const noexcept
 Return the current dimension of array.
 
constexpr size_t capacity () const noexcept
 The type of element of array.
 
size_t size () const noexcept
 Return the number of elements.
 
bool is_empty () const noexcept
 Return true is the array is empty.
 
 MemArray (size_t __dim=Min_Dim)
 Construct an array con capacity equal or gre+ater than __dim.
 
 ~MemArray ()
 
void swap (MemArray &a) noexcept
 Swap in constant time this with a
 
 MemArray (const MemArray &a)
 Construct a copy of a
 
 MemArray (MemArray &&a) noexcept
 Construct an array moved of rvalue a
 
MemArrayoperator= (const MemArray &a)
 Assign by copy a to this
 
MemArrayoperator= (MemArray &&a) noexcept
 Assign by moving a to this
 
void empty ()
 Empty the container. The array is not contracted.
 
void empty_and_release ()
 Empty the array and release all memory.
 
Tput (const T &item)
 Put a copy of item at the end of sequence.
 
Tput (T &&item)
 Move item at the end of sequence.
 
Tpush (const T &item)
 Push a copy of item at the beginning of sequence.
 
Tpush (T &&item)
 Push a copy of item at the beginning of sequence.
 
Ttop () const
 
T remove_first ()
 Remove first item. Gap is closed.
 
T pop ()
 pop() the most recently pushed item
 
Tappend (T &item)
 
Tappend (T &&item)
 
Tinsert (T &item)
 
Tinsert (T &&item)
 
void putn (const size_t more)
 Reserve more additional logical slots in the array.
 
MemArrayappend (const MemArray &a)
 
void reserve (const size_t cap)
 Reserves cap cells into the array.
 
T get (const size_t i=1)
 Remove i elements from the end.
 
T get_ne (const size_t i=1) noexcept
 
T remove_last ()
 
Tlast () const
 Return a modifiable reference to the last element.
 
Tfirst () const
 Return a modifiable reference to the first element.
 
Tget_first () const
 
Tget_last () const
 
MemArrayreverse ()
 Reverse the order of items in array.
 
Taccess (const size_t i) const noexcept
 Return a modifiable reference to the ith element.
 
Toperator[] (const size_t i) const
 Return a reference to the ith element.
 
Toperator() (const size_t i) const noexcept
 
template<class Operation >
bool traverse (Operation &operation)
 Traverse all the elements from index 0 to n - 1 and execute operation on each on them.
 
template<class Operation >
bool traverse (Operation &operation) const
 
template<class Operation >
bool traverse (Operation &&operation) const
 
template<class Operation >
bool traverse (Operation &&operation)
 
bool is_valid () const noexcept
 
- Public Member Functions inherited from LocateFunctions< ArrayQueue< T >, T >
auto get_it () const
 Return a properly initialized iterator positioned at the first item on the container.
 
auto get_it (const size_t pos) const
 Return a properly initialized iterator positioned at the pos item on the container.
 
auto get_itor () const
 Alias of get_it().
 
T & nth_ne (const size_t n) noexcept
 Return the n‑th element without bounds checking.
 
const T & nth_ne (const size_t n) const noexcept
 Const overload of nth_ne(size_t).
 
T & nth (const size_t n)
 Return the n-th item of container.
 
const T & nth (const size_t n) const
 Const overload of nth(size_t).
 
T * find_ptr (Operation &operation) noexcept(operation_is_noexcept< Operation >())
 Find a pointer to an item in the container according to a searching criteria.
 
const T * find_ptr (Operation &operation) const noexcept(operation_is_noexcept< Operation >())
 Const overload of find_ptr(Operation&).
 
const T * find_ptr (Operation &&operation) const noexcept(operation_is_noexcept< Operation >())
 Overload of find_ptr(Operation&) const that accepts rvalues.
 
T * find_ptr (Operation &&operation) noexcept(operation_is_noexcept< Operation >())
 Overload of find_ptr(Operation&) that accepts rvalues.
 
size_t find_index (Operation &operation) const noexcept(operation_is_noexcept< Operation >())
 Find the position of an item in the container according to a searching criteria.
 
size_t find_index (Operation &&operation) const noexcept(operation_is_noexcept< Operation >())
 Overload of find_index(Operation&) that accepts rvalues.
 
std::tuple< bool, T > find_item (Operation &operation) noexcept(operation_is_noexcept< Operation >())
 Safe sequential searching of an item matching a criteria.
 
std::tuple< bool, T > find_item (Operation &operation) const noexcept(operation_is_noexcept< Operation >())
 
std::tuple< bool, T > find_item (Operation &&operation) noexcept(operation_is_noexcept< Operation >())
 
std::tuple< bool, T > find_item (Operation &&operation) const noexcept(operation_is_noexcept< Operation >())
 
- Public Member Functions inherited from FunctionalMethods< ArrayQueue< T >, T >
void emplace (Args &&... args)
 Appends a new element into the container by constructing it in-place with the given args.
 
void emplace_end (Args &&... args)
 
void emplace_ins (Args &&... args)
 Insert a new element into the container by constructing it in-place with the given args.
 
size_t ninsert (Args ... args)
 Insert n variadic items.
 
size_t nappend (Args ... args)
 Append n variadic items.
 
void for_each (Operation &operation)
 Traverse all the container and performs an operation on each element.
 
void for_each (Operation &operation) const
 Const overload of for_each(Operation&).
 
void for_each (Operation &&operation) const
 Overload of for_each(Operation&) const that accepts rvalues.
 
void for_each (Operation &&operation)
 Overload of for_each(Operation&) that accepts rvalues.
 
void each (Operation &operation)
 Alias of for_each(Operation&).
 
void each (Operation &operation) const
 Const alias of for_each(Operation&).
 
void each (Operation &&operation) const
 Const alias of for_each(Operation&) that accepts rvalues.
 
void each (Operation &&operation)
 Alias of for_each(Operation&) that accepts rvalues.
 
void each (size_t pos, const size_t slice, Operation &operation) const
 Traverse the container starting at pos taking one item every slice, performing a mutable operation on each visited element.
 
void each (const size_t pos, const size_t slice, Operation &&operation) const
 
void mutable_for_each (Operation &operation)
 
void mutable_for_each (Operation &&operation)
 
bool all (Operation &operation) const
 Check if all the elements of container satisfy a condition.
 
bool all (Operation &&operation) const
 Overload of all(Operation&) that accepts rvalues.
 
bool exists (Operation &op) const
 Test for existence in the container of an element satisfying a criteria.
 
bool exists (Operation &&op) const
 Overload of exists(Operation&) that accepts rvalues.
 
Aleph::DynList< __T > maps (Operation &op) const
 Map the elements of the container.
 
Aleph::DynList< __T > maps (Operation &&op) const
 Overload of maps(Operation&) that accepts rvalues.
 
Aleph::DynList< __Tmaps_if (Prop prop, Operation &op) const
 Conditional mapping of the elements of the container.
 
Aleph::DynList< __Tmaps_if (Prop prop, Operation &&op) const
 Overload of maps_if(Prop, Operation&) that accepts rvalues.
 
Aleph::DynList< T > to_dynlist () const
 Convert container to DynList.
 
std::vector< T > to_vector () const
 Convert container to std::vector.
 
__T foldl (const __T &init, Op &op) const
 Fold the elements of the container to a specific result.
 
__T foldl (const __T &init, Op &&op=Op()) const
 Overload of foldl(const __T&, Op&) that accepts rvalues.
 
__T fold_left (const __T &init, Op &op) const
 Alias for foldl with the same accumulator type.
 
__T fold_left (const __T &init, Op &&op=Op()) const
 Overload of fold_left(const __T&, Op&) that accepts rvalues.
 
fold (const T &init, Operation &operation) const
 Simplified version of foldl() where the folded type is the same type of elements stored in the container.
 
fold (const T &init, Operation &&operation) const
 Overload of fold(const T&, Operation&) that accepts rvalues.
 
Aleph::DynList< T > filter (Operation &operation) const
 Filter the elements of a container according to a matching criteria.
 
Aleph::DynList< T > filter (Operation &&operation) const
 Overload of filter(Operation&) that accepts rvalues.
 
Aleph::DynList< const T * > ptr_filter (Operation &operation) const
 Filter the elements of a container according to a matching criteria and return a pointer to the matched items in the container.
 
Aleph::DynList< const T * > ptr_filter (Operation &&operation) const
 Overload of ptr_filter(Operation&) that accepts rvalues.
 
Aleph::DynList< std::tuple< T, size_t > > pfilter (Operation &operation) const
 Filter the elements of a container according to a matching criteria and determine its positions respect to the traversal of container.
 
Aleph::DynList< std::tuple< T, size_t > > pfilter (Operation &&operation) const
 Overload of pfilter(Operation&) that accepts rvalues.
 
std::pair< Aleph::DynList< T >, Aleph::DynList< T > > partition (Operation &op) const
 Exclusive partition of container according to a filter criteria.
 
std::pair< Aleph::DynList< T >, Aleph::DynList< T > > partition (Operation &&op) const
 Overload of partition(Operation&) that accepts rvalues.
 
std::pair< Aleph::DynList< T >, Aleph::DynList< T > > partition (size_t n) const
 Exclusive partition of container in the nth item.
 
std::pair< Aleph::DynList< T >, Aleph::DynList< T > > split_half () const
 Split the container into two halves by alternating elements.
 
std::tuple< Aleph::DynList< T >, Aleph::DynList< T > > tpartition (Operation &op) const
 Exclusive partition of container according to a filter criteria.
 
std::tuple< Aleph::DynList< T >, Aleph::DynList< T > > tpartition (Operation &&op) const
 Overload of tpartition(Operation&) that accepts rvalues.
 
size_t length () const noexcept
 Count the number of elements of a container.
 
Aleph::DynList< T > rev () const
 Return a list with the elements of container in reverse order respect to its traversal order.
 
Aleph::DynList< T > take (const size_t n) const
 Return a list with the first n elements seen in the container during its traversal.
 
Aleph::DynList< T > take (size_t i, const size_t j, const size_t step=1) const
 Return a list with elements seen in the container between i and j position respect to its traversal.
 
Aleph::DynList< T > drop (const size_t n) const
 Drop the first n elements seen in the container during its traversal.
 
void mutable_drop (const size_t n)
 Drop the first n elements seen from container.
 
- Public Member Functions inherited from GenericItems< Container, T >
Aleph::DynList< T > items () const
 Return a list of all the elements of a container sorted by traversal order.
 
Aleph::DynList< T > keys () const
 
- Public Member Functions inherited from EqualToMethod< ArrayQueue< T > >
bool equal_to (const ArrayQueue< T > &r) const noexcept
 Test if elements of this are exactly contained in another container.
 
bool operator== (const ArrayQueue< T > &r) const noexcept
 
bool operator!= (const ArrayQueue< T > &r) const noexcept
 Negation of equal_to()
 
- Public Member Functions inherited from StlAlephIterator< ArrayQueue< T > >
iterator begin () noexcept
 Return an STL-compatible iterator to the first element.
 
const_iterator begin () const noexcept
 Return a const iterator to the first element.
 
iterator end () noexcept
 Return an STL-compatible end iterator.
 
const_iterator end () const noexcept
 Return a const end iterator.
 
const_iterator cbegin () const noexcept
 Return a const iterator to the first element.
 
const_iterator cend () const noexcept
 Return a const end iterator.
 

Private Member Functions

void increase_index (size_t &i, const size_t inc=1) const noexcept
 
Trear_item (const size_t i=0) const noexcept
 
void recenter_indices () noexcept
 
Tcomplete_put () noexcept
 

Private Attributes

size_t front_index
 
size_t rear_index
 

Additional Inherited Members

- Public Types inherited from Aleph::MemArray< T >
using Item_Type = T
 
- Public Types inherited from StlAlephIterator< ArrayQueue< T > >
using iterator = StlIterator< ArrayQueue< T > >
 
using const_iterator = StlConstIterator< ArrayQueue< T > >
 
- Public Attributes inherited from Aleph::MemArray< T >
size_t contract_threshold
 
- Static Public Attributes inherited from Aleph::MemArray< T >
static constexpr size_t Min_Dim = 4
 
- Protected Member Functions inherited from Aleph::MemArray< T >
void allocate ()
 Allocate memory for the current dimension.
 
bool expand (const size_t first=0)
 Test is array is full and if affrimative, then expand the array twice as long and copy the content by swapping.
 
bool contract (const size_t first=0)
 Test if n is lesser than contract_threshold and eventually contract the array half long and copies its content.
 
void init_dim (size_t d) noexcept
 Initialize the dimension of the array to d or to the next two power if d is not a two power.
 
- Protected Attributes inherited from Aleph::MemArray< T >
Tptr = nullptr
 
size_t dim = Min_Dim
 
size_t n = 0
 

Detailed Description

template<typename T>
class Aleph::ArrayQueue< T >

Queue implemented with a single dynamic array.

ArrayQueue<T> represents a queue if elements of generic type T which is stored in single dynamic. In this queue, modifiying operations test arrays bounds.

The array is allocated with new operator and dynamically grows according to the size.

Note
If you are sure of knowing the bounds, then use FixedStack, which is faster because it does not perform bound_statics checks,

Definition at line 73 of file tpl_arrayQueue.H.

Constructor & Destructor Documentation

◆ ArrayQueue() [1/6]

template<typename T >
Aleph::ArrayQueue< T >::ArrayQueue ( const size_t  sz = 8)
inline

Construct a queue with capacity sz

Parameters
[in]szinitial capacity
Exceptions
bad_allocif there is no enough memory

Definition at line 118 of file tpl_arrayQueue.H.

◆ ArrayQueue() [2/6]

template<typename T >
Aleph::ArrayQueue< T >::ArrayQueue ( const ArrayQueue< T > &  q)
inline

Copy constructor.

Definition at line 125 of file tpl_arrayQueue.H.

◆ ArrayQueue() [3/6]

template<typename T >
Aleph::ArrayQueue< T >::ArrayQueue ( ArrayQueue< T > &&  q)
inlinenoexcept

Move constructor.

Definition at line 132 of file tpl_arrayQueue.H.

◆ ArrayQueue() [4/6]

template<typename T >
template<template< typename > class List>
Aleph::ArrayQueue< T >::ArrayQueue ( const List< T > &  l)
inline

Definition at line 140 of file tpl_arrayQueue.H.

◆ ArrayQueue() [5/6]

template<typename T >
template<class It >
Aleph::ArrayQueue< T >::ArrayQueue ( It  b,
It  e 
)
inline

Definition at line 140 of file tpl_arrayQueue.H.

◆ ArrayQueue() [6/6]

template<typename T >
Aleph::ArrayQueue< T >::ArrayQueue ( std::initializer_list< T l)
inline

Definition at line 140 of file tpl_arrayQueue.H.

Member Function Documentation

◆ append() [1/2]

template<typename T >
T & Aleph::ArrayQueue< T >::append ( const T item)
inline

Definition at line 201 of file tpl_arrayQueue.H.

References Aleph::ArrayQueue< T >::put().

◆ append() [2/2]

template<typename T >
T & Aleph::ArrayQueue< T >::append ( T &&  item)
inline

Definition at line 204 of file tpl_arrayQueue.H.

References Aleph::ArrayQueue< T >::put().

◆ complete_put()

◆ front()

template<typename T >
T & Aleph::ArrayQueue< T >::front ( const size_t  i = 0) const
inline

Return the i-th oldest item of the queue.

Parameters
[in]iposition to access
Returns
a modifiable reference to the oldest i-th item of the queue
Exceptions
range_errorif i is greater than the number of items

Definition at line 294 of file tpl_arrayQueue.H.

References Aleph::MemArray< T >::access(), ah_range_error_if, Aleph::MemArray< T >::dim, and Aleph::MemArray< T >::n.

Referenced by TEST(), and TEST().

◆ get()

template<typename T >
T Aleph::ArrayQueue< T >::get ( )
inline

Remove the oldest item of the queue and return a copy.

Returns
a copy of extracted item
Exceptions
underflow_errorif the queue is empty

Definition at line 255 of file tpl_arrayQueue.H.

References Aleph::MemArray< T >::access(), ah_underflow_error_if, Aleph::MemArray< T >::contract(), Aleph::ArrayQueue< T >::increase_index(), FunctionalMethods< ArrayQueue< T >, T >::maps(), Aleph::MemArray< T >::n, and Aleph::ArrayQueue< T >::recenter_indices().

Referenced by TEST(), TEST(), TEST(), TEST(), and TEST().

◆ getn()

template<typename T >
T & Aleph::ArrayQueue< T >::getn ( const size_t  i)
inline

Remove the i oldest items of the queue.

Parameters
[in]inumber of items to remove
Returns
a modifiable reference to the oldest remaining item
Exceptions
underflow_errorif i is greater than the number of items

Definition at line 275 of file tpl_arrayQueue.H.

References Aleph::MemArray< T >::access(), ah_underflow_error_if, Aleph::MemArray< T >::contract(), Aleph::ArrayQueue< T >::front_index, Aleph::ArrayQueue< T >::increase_index(), Aleph::MemArray< T >::n, and Aleph::ArrayQueue< T >::recenter_indices().

Referenced by TEST().

◆ increase_index()

◆ insert() [1/2]

template<typename T >
T & Aleph::ArrayQueue< T >::insert ( const T item)
inline

Definition at line 207 of file tpl_arrayQueue.H.

References Aleph::ArrayQueue< T >::put().

◆ insert() [2/2]

template<typename T >
T & Aleph::ArrayQueue< T >::insert ( T &&  item)
inline

Definition at line 210 of file tpl_arrayQueue.H.

References Aleph::ArrayQueue< T >::put().

◆ operator=() [1/2]

◆ operator=() [2/2]

template<typename T >
ArrayQueue & Aleph::ArrayQueue< T >::operator= ( const ArrayQueue< T > &  q)
inline

Copy assign.

Definition at line 143 of file tpl_arrayQueue.H.

References Aleph::ArrayQueue< T >::front_index, and Aleph::ArrayQueue< T >::rear_index.

◆ put() [1/2]

template<typename T >
Aleph::ArrayQueue< T >::put ( const T item)
inline

Copy and put an item in the queue.

Parameters
[in]itemto put
Returns
a modifiable reference to the copied item
Exceptions
bad_allocif there is no enough memory

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

Definition at line 183 of file tpl_arrayQueue.H.

References Aleph::MemArray< T >::access(), Aleph::ArrayQueue< T >::complete_put(), Aleph::MemArray< T >::expand(), and Aleph::ArrayQueue< T >::recenter_indices().

Referenced by SimpleQueue::SimpleQueue(), Aleph::ArrayQueue< T >::append(), Aleph::ArrayQueue< T >::append(), Aleph::ArrayQueue< T >::insert(), Aleph::ArrayQueue< T >::insert(), TEST(), TEST(), TEST(), TEST(), and TEST().

◆ put() [2/2]

template<typename T >
Aleph::ArrayQueue< T >::put ( T &&  item)
inline

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

Definition at line 192 of file tpl_arrayQueue.H.

References Aleph::MemArray< T >::access(), Aleph::ArrayQueue< T >::complete_put(), Aleph::MemArray< T >::expand(), and Aleph::ArrayQueue< T >::recenter_indices().

◆ putn()

template<typename T >
T & Aleph::ArrayQueue< T >::putn ( size_t  sz)
inline

Put in constant time sz empty entries to the stack.

putn(n) puts sz entries to the stack in an functionally equivalent way to sz pushes, except that the operation takes constant time.

The maximum value of sz is bounded by 2*capacity() - size().

Parameters
[in]sznumber of cells to push
Returns
a modifiabñpe reference to the stack's top
Exceptions
overflow_errorif sz > 2*capacity() - size()
bad_allocif there is no enough memory

Definition at line 225 of file tpl_arrayQueue.H.

References ah_overflow_error_if, Aleph::MemArray< T >::dim, Aleph::MemArray< T >::expand(), Aleph::ArrayQueue< T >::increase_index(), FunctionalMethods< ArrayQueue< T >, T >::maps(), Aleph::MemArray< T >::n, Aleph::ArrayQueue< T >::rear_index, Aleph::ArrayQueue< T >::rear_item(), and Aleph::ArrayQueue< T >::recenter_indices().

◆ rear()

template<typename T >
T & Aleph::ArrayQueue< T >::rear ( const size_t  i = 0) const
inline

Return the i-th youngest item of the queue.

Parameters
[in]iposition to access
Returns
a modifiable reference to the i-th youngest item of the queue
Exceptions
range_errorif i is greater than the number of items

Definition at line 307 of file tpl_arrayQueue.H.

References ah_range_error_if, Aleph::MemArray< T >::n, and Aleph::ArrayQueue< T >::rear_item().

Referenced by TEST(), and TEST().

◆ rear_item()

template<typename T >
T & Aleph::ArrayQueue< T >::rear_item ( const size_t  i = 0) const
inlineprivatenoexcept

◆ recenter_indices()

◆ swap()

template<typename T >
void Aleph::ArrayQueue< T >::swap ( ArrayQueue< T > &  q)
inlinenoexcept

◆ traverse() [1/4]

template<typename T >
template<class Operation >
bool Aleph::ArrayQueue< T >::traverse ( Operation &&  operation)
inline

Definition at line 349 of file tpl_arrayQueue.H.

References FunctionalMethods< ArrayQueue< T >, T >::maps().

◆ traverse() [2/4]

template<typename T >
template<class Operation >
bool Aleph::ArrayQueue< T >::traverse ( Operation &&  operation) const
inline

Definition at line 342 of file tpl_arrayQueue.H.

References FunctionalMethods< ArrayQueue< T >, T >::maps().

◆ traverse() [3/4]

template<typename T >
template<class Operation >
Aleph::ArrayQueue< T >::traverse ( Operation operation)
inline

Traverse all the elements from the youngest to the oldest and execute operation on each on them.

Parameters
[in]operationto be performed on each element
Returns
true if operation was executed on all elements; false otherwise.

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

Definition at line 322 of file tpl_arrayQueue.H.

References Aleph::MemArray< T >::access(), Aleph::ArrayQueue< T >::front_index, Aleph::ArrayQueue< T >::increase_index(), FunctionalMethods< ArrayQueue< T >, T >::maps(), and Aleph::MemArray< T >::n.

Referenced by TEST(), and Aleph::ArrayQueue< T >::traverse().

◆ traverse() [4/4]

template<typename T >
template<class Operation >
bool Aleph::ArrayQueue< T >::traverse ( Operation operation) const
inline

Member Data Documentation

◆ front_index

◆ rear_index


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