ivl 679
ivl::array< T, data::stack< N, USE_REALLOC, USE_PREALLOC, DERIVED_INFO > > Class Template Reference

1-dimensional array of type T More...

#include <array.hpp>

Inherits ivl::array_common_base< C >.

List of all members.

Public Types

typedef ptrdiff_t diff_type
 difference type of iterators
typedef size_t size_type
 parameter of resize, in each class of the hierarchy

Public Member Functions

void init (size_t len)
 Init is same as resize for 1-d arrays.
void reshape (size_t len)
 Reshape is same as resize for 1-d arrays.
 ~array ()
 destructor
Size functions
size_t length () const
 Get the length of the element sequence.
size_type size () const
 Get the size of the array. generic-class function.
size_t numel () const
 Get the length of the element sequence.
Element access

Access a unique element by specifying the position

const T & operator[] (size_t offset) const
 Returns the const element found at position offset.
T & operator[] (size_t offset)
 Returns the element found at position offset.
Constructors
 array ()
 Default constructor.
 array (size_t count)
 Construnct by defining an initial number of elements.
 array (int count)
 Construnct by defining an initial number of elements.
 array (long int count)
 Construnct by defining an initial number of elements.
 array (size_t count, const T &s)
 Construnct by defining an initial number of elements and a default value.
 array (size_t count, const T *ptr)
 Construct by using a C array.
template<class J >
 array (const internal::tuple_rvalue< J > &r)
 Construct array with rvalue.
 array (const this_type &a)
 Copy-constructor.
template<class J , class S >
 array (const array< J, S > &a, size_t n)
 construct from classes derived from array, using N elements
template<class J , class S >
 array (const array< J, S > &a)
 construct from an existing array of any type.
template<class J , class S >
 array (size_t count, const array< J, S > &a)
 Construct from array of the same type, using (shape, array)
Assignement Operators
this_typeoperator= (const this_type &a)

Detailed Description

template<class T, class DERIVED_INFO, int N, bool USE_REALLOC, bool USE_PREALLOC>
class ivl::array< T, data::stack< N, USE_REALLOC, USE_PREALLOC, DERIVED_INFO > >

1-dimensional array of type T

This class defines an simple one-dimensional array. little array has the following properties: + very fast for small data that are <= N in size + economic in memory allocation. does free extra memory on resize in chunks of 64K elements, for larger sizes. -/+ optimized for small data. + can hold any size data, even > 4GB for a 64-bit system.

  • slower resize than vector, especially for lengths > N
  • class data might be moved to different pointer, this is done without using copy constructor when USE_REALLOC is used.
  • There is a temporary overhead which up to 2 * array size, during resizing. The two last - also apply to std::vector.

Note: some (few) element classes will be completely invalid with USE_REALLOC. Those are classes that depend on their own pointer location, e.g. have references on their own data. array<little> is one of those classes itself!


Constructor & Destructor Documentation

template<class T , class DERIVED_INFO , int N, bool USE_REALLOC, bool USE_PREALLOC>
ivl::array< T, data::stack< N, USE_REALLOC, USE_PREALLOC, DERIVED_INFO > >::array ( size_t  count,
const T &  s 
) [inline]

Construnct by defining an initial number of elements and a default value.

Parameters:
countLength of the array
sDefault value for all elements
template<class T , class DERIVED_INFO , int N, bool USE_REALLOC, bool USE_PREALLOC>
ivl::array< T, data::stack< N, USE_REALLOC, USE_PREALLOC, DERIVED_INFO > >::array ( size_t  count,
const T *  ptr 
) [inline]

Construct by using a C array.

Parameters:
countLength of the array
ptrThe C array
template<class T , class DERIVED_INFO , int N, bool USE_REALLOC, bool USE_PREALLOC>
template<class J , class S >
ivl::array< T, data::stack< N, USE_REALLOC, USE_PREALLOC, DERIVED_INFO > >::array ( const array< J, S > &  a,
size_t  n 
) [inline]

construct from classes derived from array, using N elements

Developper's note: You cannot remove the defined constructor even though it is a subset of this. This is because the copy constructor has a specific declaration, and should be declared to override the C++ default copy-constructor which is wrong and causes heap corruption.

template<class T , class DERIVED_INFO , int N, bool USE_REALLOC, bool USE_PREALLOC>
template<class J , class S >
ivl::array< T, data::stack< N, USE_REALLOC, USE_PREALLOC, DERIVED_INFO > >::array ( size_t  count,
const array< J, S > &  a 
) [inline]

Construct from array of the same type, using (shape, array)

This constructor has the same functionality as the (array, n) constructor, but fulfills a standard construction template that defines that all kinds of arrays (2d, nd etc) can be constructed with derived.size(), array<..> pair A difference is that this function can also accept zero length


The documentation for this class was generated from the following file:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations