Warning: this documentation for the development version is under construction.
Allocators are used to allocate and deallocate memory. The last template argument of vectors and matrices is the allocator. For a vector: Vector<double, Vect_Full, CallocAlloc<double> >
. CallocAlloc
is an allocator based on calloc
. MallocAlloc
is another allocator based on malloc
. The third available allocator is NewAlloc
, based on new
. The last one is NaNAlloc
, based on malloc
and which initializes allocated elements to "not a number". If a vector or a matrix managed by NaNAlloc
is not properly filled, there will still be NaNs in the vector or the matrix, which is easy to detect.
The default allocator is MallocAlloc
. The default allocator may be changed thanks to SELDON_DEFAULT_ALLOCATOR
:
define SELDON_DEFAULT_ALLOCATOR NewAlloc
defines NewAlloc
as the default allocator. This line must be put before Seldon.hxx
is included. We strongly encourage beginner to set NewAlloc
as the default allocator since only this allocator will call constructors of objects contained in the vector. This property is essential when the elements of the vector are C++ classes.
#define SELDON_DEFAULT_ALLOCATOR NewAlloc #include "Seldon.hxx" using namespace Seldon; // For vector containing integers, MallocAlloc is okay Vector<int, Vect_Full, MallocAlloc<int> > X; // For vector containing vectors, NewAlloc is needed Vector<Vector<double> > Xvec;