Arcane  4.1.12.0
User documentation
Loading...
Searching...
No Matches
Arcane::SmallArray< T, NbElement > Class Template Referencefinal

1D data array with pre-allocated stack buffer. More...

#include <arccore/common/SmallArray.h>

Public Types

typedef ArrayTraits< T >::ConstReferenceType ConstReferenceType
Public Types inherited from Arcane::Array< T >
typedef AbstractArray< T > BaseClassType
typedef ArrayTraits< T >::ConstReferenceType ConstReferenceType
typedef ArrayIterator< const_pointerconst_iterator
 Type of the constant iterator over an array element.
typedef const value_typeconst_pointer
 Constant pointer type of an array element.
typedef ConstReferenceType const_reference
 Type constant reference of an array element.
typedef std::reverse_iterator< const_iteratorconst_reverse_iterator
typedef ptrdiff_t difference_type
 Type of a distance between array element iterators.
typedef ArrayIterator< pointeriterator
 Type of the iterator over an array element.
typedef value_typepointer
 Pointer type of an array element.
typedef value_typereference
 Type reference of an array element.
typedef std::reverse_iterator< iteratorreverse_iterator
typedef Int64 size_type
 Type indexing the array.
typedef T value_type
 Type of the array elements.
Public Types inherited from Arcane::AbstractArray< T >
typedef ArrayTraits< T >::ConstReferenceType ConstReferenceType
typedef ArrayTraits< T >::IsPODType IsPODType
typedef AbstractArray< T > ThatClassType
using TrueImpl = T
typedef T value_type
 Type of the array elements.
typedef value_typepointer
 Pointer type of an array element.
typedef const value_typeconst_pointer
 Constant pointer type of an array element.
typedef ArrayIterator< pointeriterator
 Type of the iterator over an array element.
typedef ArrayIterator< const_pointerconst_iterator
 Type of the constant iterator over an array element.
typedef value_typereference
 Type reference of an array element.
typedef ConstReferenceType const_reference
 Type constant reference of an array element.
typedef Int64 size_type
 Type indexing the array.
typedef ptrdiff_t difference_type
 Type of a distance between array element iterators.
typedef std::reverse_iterator< iteratorreverse_iterator
typedef std::reverse_iterator< const_iteratorconst_reverse_iterator

Public Member Functions

 SmallArray ()
 Creates an empty array.
 SmallArray (Int64 req_size, ConstReferenceType value)
 Creates an array of size elements containing the value value.
 SmallArray (Int64 asize)
 Creates an array of asize elements containing the default value of type T().
 SmallArray (Int32 asize)
 Creates an array of asize elements containing the default value of type T().
 SmallArray (size_t asize)
 Creates an array of asize elements containing the default value of type T().
 SmallArray (const ConstArrayView< T > &aview)
 Creates an array by copying the values from the view aview.
 SmallArray (const Span< const T > &aview)
 Creates an array by copying the values from the view aview.
 SmallArray (const ArrayView< T > &aview)
 Creates an array by copying the values from the view aview.
 SmallArray (const Span< T > &aview)
 Creates an array by copying the values from the view aview.
 SmallArray (std::initializer_list< T > alist)
 SmallArray (const Array< T > &rhs)
 Creates an array by copying the values rhs.
void operator= (const Array< T > &rhs)
 Copies the values of rhs into this instance.
void operator= (const ArrayView< T > &rhs)
 Copies the values of the view rhs into this instance.
void operator= (const Span< T > &rhs)
 Copies the values of the view rhs into this instance.
void operator= (const ConstArrayView< T > &rhs)
 Copies the values of the view rhs into this instance.
void operator= (const Span< const T > &rhs)
 Copies the values of the view rhs into this instance.
 ~SmallArray () override
 Destroys the instance.
template<Int32 N>
 SmallArray (SmallArray< T, N > &&rhs)=delete
template<Int32 N>
SmallArray< T, NbElement > operator= (SmallArray< T, N > &&rhs)=delete
Public Member Functions inherited from Arcane::Array< T >
 operator ConstArrayView< T > () const
 operator ArrayView< T > ()
 operator Span< const T > () const
 operator Span< T > ()
ConstArrayView< T > constView () const
 Constant view of this array.
Span< const T > constSpan () const
 Constant view of this array.
ConstArrayView< T > subConstView (Int64 abegin, Int32 asize) const
 Sub-view starting from element abegin and containing asize elements.
ArrayView< T > view () const
 Mutable view of this array.
Span< const T > span () const
 Immutable view of this array.
Span< T > span ()
 Mutable view of this array.
SmallSpan< const T > smallSpan () const
 Immutable view of this array.
SmallSpan< const T > constSmallSpan () const
 Immutable view of this array.
SmallSpan< T > smallSpan ()
 Mutable view of this array.
ArrayView< T > subView (Int64 abegin, Integer asize)
 Sub-view starting from element abegin and containing asize elements.
void sample (ConstArrayView< Integer > indexes, ArrayView< T > result) const
 Extracts a sub-array from a list of indices.
void add (ConstReferenceType val)
 Adds element val to the end of the array.
void addRange (ConstReferenceType val, Int64 n)
 Adds n elements of value val to the end of the array.
void addRange (ConstArrayView< T > val)
 Adds n elements of value val to the end of the array.
void addRange (Span< const T > val)
 Adds n elements of value val to the end of the array.
void addRange (ArrayView< T > val)
 Adds n elements of value val to the end of the array.
void addRange (Span< T > val)
 Adds n elements of value val to the end of the array.
void addRange (const Array< T > &val)
 Adds n elements of value val to the end of the array.
void resize (Int64 s)
 Changes the number of elements in the array to s.
void resize (Int64 s, ConstReferenceType fill_value)
 Changes the number of elements in the array to s.
void resizeNoInit (Int64 s)
 Resizes without initializing new values.
void reserve (Int64 new_capacity)
 Reserves memory for new_capacity elements.
void shrink ()
 Reallocates to free unused memory.
void shrink (Int64 new_capacity)
 Reallocates memory to have a capacity close to new_capacity.
void shrink_to_fit ()
 Reallocates to free unused memory.
void remove (Int64 index)
 Removes the entity at index index.
void popBack ()
 Removes the last entity from the array.
T & at (Int64 i)
 Element at index i. Always checks for overflows.
ConstReferenceType at (Int64 i) const
 Element at index i. Always checks for overflows.
void setAt (Int64 i, ConstReferenceType value)
 Sets the element at index i. Always checks for overflows.
ConstReferenceType item (Int64 i) const
 Element at index i.
void setItem (Int64 i, ConstReferenceType v)
 Element at index i.
ConstReferenceType operator[] (Int64 i) const
 Element at index i.
T & operator[] (Int64 i)
 Element at index i.
ConstReferenceType operator() (Int64 i) const
T & operator() (Int64 i)
 Element at index i.
T & back ()
 Last element of the array.
ConstReferenceType back () const
 Last element of the array (const).
T & front ()
 First element of the array.
ConstReferenceType front () const
 First element of the array (const).
void clear ()
 Removes the elements from the array.
void fill (ConstReferenceType value)
 Fills the array with the value value.
void copy (Span< const T > rhs)
 Copies the values from rhs into the instance.
Array< T > clone () const
 Clones the array.
const T * unguardedBasePointer () const
T * unguardedBasePointer ()
const T * data () const
 Access to the root of the array without any protection.
T * data ()
iterator begin ()
 Iterator over the first element of the array.
const_iterator begin () const
 Constant iterator over the first element of the array.
iterator end ()
 Iterator over the first element after the end of the array.
const_iterator end () const
 Constant iterator over the first element after the end of the array.
reverse_iterator rbegin ()
 Reverse iterator over the first element of the array.
const_reverse_iterator rbegin () const
 Reverse iterator over the first element of the array.
reverse_iterator rend ()
 Reverse iterator over the first element after the end of the array.
const_reverse_iterator rend () const
 Reverse iterator over the first element after the end of the array.
ArrayRange< pointerrange ()
 Iteration range from the first to the last element.
ArrayRange< const_pointerrange () const
 Iteration range from the first to the last element.
void push_back (ConstReferenceType val)
 Adds the element val to the end of the array.
Public Member Functions inherited from Arcane::AbstractArray< T >
 AbstractArray (const AbstractArray< T > &rhs)=delete
AbstractArray< T > & operator= (const AbstractArray< T > &rhs)=delete
void dispose ()
 Frees the memory used by the array.
 operator ConstArrayView< T > () const
 operator Span< const T > () const
 operator SmallSpan< const T > () const
Integer size () const
 Number of elements in the vector.
Integer length () const
 Number of elements in the vector.
Integer capacity () const
 Capacity (number of allocated elements) of the vector.
Int64 largeSize () const
 Number of elements in the vector (in 64 bits).
Int64 largeLength () const
 Number of elements in the vector (in 64 bits).
Int64 largeCapacity () const
 Capacity (number of allocated elements) of the vector (in 64 bits).
bool empty () const
 Capacity (number of allocated elements) of the vector.
bool contains (ConstReferenceType v) const
 True if the array contains the value element v.
ConstReferenceType operator[] (Int64 i) const
 Element at index i.
ConstReferenceType operator() (Int64 i) const
 Element at index i.
void setMemoryLocationHint (eMemoryLocationHint new_hint)
 Modifies the memory location information.
void _internalSetHostDeviceMemoryLocation (eHostDeviceMemoryLocation location)
 Sets the physical location of the memory region.
eHostDeviceMemoryLocation hostDeviceMemoryLocation () const
 Sets the physical location of the memory region.
void changeAllocator (const MemoryAllocationOptions &options, RunQueue *queue)
void changeAllocator (const MemoryAllocationOptions &options)
void printInfos (std::ostream &o)
Public Member Functions inherited from Arcane::AbstractArrayBase
IMemoryAllocatorallocator () const
MemoryAllocationOptions allocationOptions () const
void setDebugName (const String &name)
 Sets the array name for debug information.
String debugName () const
 Debug name (null if no name specified).

Static Public Attributes

static constexpr Int32 MemorySize = NbElement * SizeOfType

Additional Inherited Members

Protected Member Functions inherited from Arcane::Array< T >
 Array (Array< T > &&rhs) ARCCORE_NOEXCEPT
 Move constructor (only for UniqueArray).
void _initFromInitializerList (std::initializer_list< T > alist)
Protected Member Functions inherited from Arcane::AbstractArray< T >
 AbstractArray ()
 Constructs an empty vector with the default allocator.
 AbstractArray (ThatClassType &&rhs) ARCCORE_NOEXCEPT
 Move constructor. Should only be used by UniqueArray.
AllocatedMemoryInfo _currentMemoryInfo () const
void _initFromSpan (const Span< const T > &view)
 Initializes the array with the view view.
void _initFromAllocator (MemoryAllocationOptions o, Int64 acapacity, void *pre_allocated_buffer=nullptr)
 Constructs an empty vector with a specific allocator a.
void _reserve (Int64 new_capacity)
 Reserves memory for new_capacity elements.
void _internalRealloc (Int64 new_capacity, bool compute_capacity, RunQueue *queue=nullptr)
 Reallocates the array for a new capacity equal to new_capacity.
void _internalReallocate (Int64 new_capacity, RunQueue *queue)
void _internalDeallocate (RunQueue *queue=nullptr)
void _internalAllocate (Int64 new_capacity, RunQueue *queue)
void _copyFromMemory (const T *source)
virtual void _updateReferences ()
 Update references.
virtual Integer _getNbRef ()
 Update references.
void _addRange (ConstReferenceType val, Int64 n)
 Adds n elements of value val to the end of the array.
void _addRange (Span< const T > val)
 Adds n elements of value val to the end of the array.
void _checkFreeMemory ()
 Destroys the instance if no one references it.
void _destroy ()
void _destroyRange (Int64, Int64, TrueType)
void _destroyRange (Int64 abegin, Int64 aend, FalseType)
void _createRangeDefault (Int64, Int64, TrueType)
void _createRangeDefault (Int64 abegin, Int64 aend, FalseType)
void _createRange (Int64 abegin, Int64 aend, ConstReferenceType value, TrueType)
void _createRange (Int64 abegin, Int64 aend, ConstReferenceType value, FalseType)
void _createRange (Int64 abegin, Int64 aend, const T *values)
void _fill (ConstReferenceType value)
void _clone (const ThatClassType &orig_array)
template<typename PodType>
void _resizeHelper (Int64 s, PodType pod_type, RunQueue *queue)
void _resize (Int64 s)
void _resizeNoInit (Int64 s, RunQueue *queue=nullptr)
 Redimensionne sans initialiser les nouvelles valeurs.
void _clear ()
void _resize (Int64 s, ConstReferenceType value)
 Redimensionne et remplit les nouvelles valeurs avec value.
void _copy (const T *rhs_begin, TrueType)
void _copy (const T *rhs_begin, FalseType)
void _copy (const T *rhs_begin)
void _resizeAndCopyView (Span< const T > rhs)
 Redimensionne l'instance et recopie les valeurs de rhs.
void _move (ThatClassType &rhs) ARCCORE_NOEXCEPT
 Implements the move assignment operator.
void _swap (ThatClassType &rhs) ARCCORE_NOEXCEPT
 Swaps the values of the instance with those of rhs.
void _shrink ()
void _shrink (Int64 new_capacity)
void _reset ()
 Resets the array to an empty array.
constexpr Integer _clampSizeOffet (Int64 offset, Int32 asize) const
void _assignFromArray (const AbstractArray< T > &rhs)
void _setMP (TrueImpl *new_mp)
void _setMP2 (TrueImpl *new_mp, ArrayMetaData *new_md)
bool _isSharedNull ()
Protected Member Functions inherited from Arcane::AbstractArrayBase
virtual bool _isUseOwnMetaData () const
 Indicates if m_md refers to m_meta_data.
void _swapMetaData (AbstractArrayBase &rhs)
void _copyMetaData (const AbstractArrayBase &rhs)
void _allocateMetaData ()
void _deallocateMetaData (ArrayMetaData *md)
void _checkValidSharedArray ()
Static Protected Member Functions inherited from Arcane::AbstractArray< T >
static constexpr Int64 typeSize ()
Static Protected Member Functions inherited from Arcane::AbstractArrayBase
static constexpr RunQueue_nullRunQueue ()
 Explicit method for a null RunQueue.
Protected Attributes inherited from Arcane::AbstractArray< T >
T * m_ptr = nullptr
Protected Attributes inherited from Arcane::AbstractArrayBase
ArrayMetaDatam_md = nullptr
ArrayMetaData m_meta_data

Detailed Description

template<typename T, Int32 NbElement = 32>
class Arcane::SmallArray< T, NbElement >

1D data array with pre-allocated stack buffer.

This class is used like UniqueArray but contains a fixed-size buffer to hold NbElement elements, which is used if the array contains at most NbElement elements. This avoids dynamic allocations when the number of elements is small.

If the array must contain more than NbElement elements, then standard dynamic allocation is used.

Definition at line 107 of file arccore/src/common/arccore/common/SmallArray.h.

Member Typedef Documentation

◆ ConstReferenceType

template<typename T, Int32 NbElement = 32>
typedef ArrayTraits<T>::ConstReferenceType Arcane::AbstractArray< T >::ConstReferenceType

Definition at line 174 of file AbstractArray.h.

Constructor & Destructor Documentation

◆ SmallArray() [1/11]

template<typename T, Int32 NbElement = 32>
Arcane::SmallArray< T, NbElement >::SmallArray ( )
inline

◆ SmallArray() [2/11]

template<typename T, Int32 NbElement = 32>
Arcane::SmallArray< T, NbElement >::SmallArray ( Int64 req_size,
ConstReferenceType value )
inline

Creates an array of size elements containing the value value.

Definition at line 129 of file arccore/src/common/arccore/common/SmallArray.h.

References SmallArray().

◆ SmallArray() [3/11]

template<typename T, Int32 NbElement = 32>
Arcane::SmallArray< T, NbElement >::SmallArray ( Int64 asize)
inlineexplicit

Creates an array of asize elements containing the default value of type T().

Definition at line 136 of file arccore/src/common/arccore/common/SmallArray.h.

References SmallArray().

◆ SmallArray() [4/11]

template<typename T, Int32 NbElement = 32>
Arcane::SmallArray< T, NbElement >::SmallArray ( Int32 asize)
inlineexplicit

Creates an array of asize elements containing the default value of type T().

Definition at line 143 of file arccore/src/common/arccore/common/SmallArray.h.

References SmallArray().

◆ SmallArray() [5/11]

template<typename T, Int32 NbElement = 32>
Arcane::SmallArray< T, NbElement >::SmallArray ( size_t asize)
inlineexplicit

Creates an array of asize elements containing the default value of type T().

Definition at line 149 of file arccore/src/common/arccore/common/SmallArray.h.

References SmallArray().

◆ SmallArray() [6/11]

template<typename T, Int32 NbElement = 32>
Arcane::SmallArray< T, NbElement >::SmallArray ( const ConstArrayView< T > & aview)
inline

Creates an array by copying the values from the view aview.

Definition at line 155 of file arccore/src/common/arccore/common/SmallArray.h.

References SmallArray().

◆ SmallArray() [7/11]

template<typename T, Int32 NbElement = 32>
Arcane::SmallArray< T, NbElement >::SmallArray ( const Span< const T > & aview)
inline

Creates an array by copying the values from the view aview.

Definition at line 161 of file arccore/src/common/arccore/common/SmallArray.h.

References Arcane::AbstractArray< T >::_initFromSpan(), and SmallArray().

◆ SmallArray() [8/11]

template<typename T, Int32 NbElement = 32>
Arcane::SmallArray< T, NbElement >::SmallArray ( const ArrayView< T > & aview)
inline

Creates an array by copying the values from the view aview.

Definition at line 168 of file arccore/src/common/arccore/common/SmallArray.h.

References SmallArray().

◆ SmallArray() [9/11]

template<typename T, Int32 NbElement = 32>
Arcane::SmallArray< T, NbElement >::SmallArray ( const Span< T > & aview)
inline

Creates an array by copying the values from the view aview.

Definition at line 174 of file arccore/src/common/arccore/common/SmallArray.h.

References SmallArray().

◆ SmallArray() [10/11]

template<typename T, Int32 NbElement = 32>
Arcane::SmallArray< T, NbElement >::SmallArray ( std::initializer_list< T > alist)
inline

◆ SmallArray() [11/11]

template<typename T, Int32 NbElement = 32>
Arcane::SmallArray< T, NbElement >::SmallArray ( const Array< T > & rhs)
inline

Creates an array by copying the values rhs.

Definition at line 186 of file arccore/src/common/arccore/common/SmallArray.h.

References Arcane::Array< T >::constSpan(), and SmallArray().

◆ ~SmallArray()

template<typename T, Int32 NbElement = 32>
Arcane::SmallArray< T, NbElement >::~SmallArray ( )
inlineoverride

Destroys the instance.

Definition at line 222 of file arccore/src/common/arccore/common/SmallArray.h.

References Arcane::AbstractArray< T >::_reset().

Member Function Documentation

◆ operator=() [1/5]

template<typename T, Int32 NbElement = 32>
void Arcane::SmallArray< T, NbElement >::operator= ( const Array< T > & rhs)
inline

Copies the values of rhs into this instance.

Definition at line 192 of file arccore/src/common/arccore/common/SmallArray.h.

References Arcane::Array< T >::constSpan(), and Arcane::Array< T >::copy().

◆ operator=() [2/5]

template<typename T, Int32 NbElement = 32>
void Arcane::SmallArray< T, NbElement >::operator= ( const ArrayView< T > & rhs)
inline

Copies the values of the view rhs into this instance.

Definition at line 198 of file arccore/src/common/arccore/common/SmallArray.h.

References Arcane::Array< T >::copy().

◆ operator=() [3/5]

template<typename T, Int32 NbElement = 32>
void Arcane::SmallArray< T, NbElement >::operator= ( const ConstArrayView< T > & rhs)
inline

Copies the values of the view rhs into this instance.

Definition at line 210 of file arccore/src/common/arccore/common/SmallArray.h.

References Arcane::Array< T >::copy().

◆ operator=() [4/5]

template<typename T, Int32 NbElement = 32>
void Arcane::SmallArray< T, NbElement >::operator= ( const Span< const T > & rhs)
inline

Copies the values of the view rhs into this instance.

Definition at line 216 of file arccore/src/common/arccore/common/SmallArray.h.

References Arcane::Array< T >::copy().

◆ operator=() [5/5]

template<typename T, Int32 NbElement = 32>
void Arcane::SmallArray< T, NbElement >::operator= ( const Span< T > & rhs)
inline

Copies the values of the view rhs into this instance.

Definition at line 204 of file arccore/src/common/arccore/common/SmallArray.h.

References Arcane::Array< T >::copy().

Member Data Documentation

◆ MemorySize

template<typename T, Int32 NbElement = 32>
Int32 Arcane::SmallArray< T, NbElement >::MemorySize = NbElement * SizeOfType
staticconstexpr

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