ivl 679
ivl::array_nd< T, data::normal_image< N, DERIVED_INFO > > Class Template Reference

Multi-dimensional array of type T. More...

#include <array_nd.hpp>

Inherits ivl::array_common_base< C >, and ivl::array_nd_details::basic_iterator_nd_interface< C >.

List of all members.

Public Types

typedef types::t_false has_1d_parenthesis
 types that specify the defined parenthesis operators for this class
typedef const size_dims< 3 > & size_nd_ref_type
 return type of size_nd in that data-specific class
typedef array< size_t, tiny > size_type
 parameter of resize, in each class of the hierarchy
typedef array< size_t, tiny > stride_ref_type
 return type of size_nd in that data-specific class

Public Member Functions

base_class & base ()
 get base class
Element access (multidimensional)

Elements can be accessed by specifying the

T & operator() (size_t s1, size_t s2, size_t s3=0)
template<class S >
T & operator() (const array< size_t, S > &indx)
const T & operator() (size_t s1, size_t s2, size_t s3=0) const
template<class S >
const T & operator() (const array< size_t, S > &indx) const
Single-dimensional constructors
 array_nd ()
 Default constructor.
Multi-dimensional constructors
template<class S >
 array_nd (const array< size_t, S > &sz)
 Construct from a size_array containing the dimension sizes.
template<class S >
 array_nd (const array< size_t, S > &sz, const T &s)
 Construct from a size_array containing the dimension sizes and assign scalar.
template<class S >
 array_nd (const array< size_t, S > &sz, const T *ptr)
 Construct from a size_array containing the dimension sizes and assign values from an one-dimensional C array.
template<class S , class J , class D >
 array_nd (const array< size_t, S > &sz, const array< J, D > &a)
 Construct from a size_array containing the dimension sizes and an array with the values, or a value for the elements.
 array_nd (const this_type &a)
 Copy constructor.
template<class J , class S >
 array_nd (const array_nd< J, S > &a)
 Constructor using another form of array_nd.
Size functions (multidimensional)
size_nd_ref_type size_nd () const
 Get the size for each dimension.
size_t size_nd (size_t d) const
 Get the size for a specific dimension.
stride_ref_type stride () const
 Get the stride for each dimension.
size_t stride (size_t dim) const
 Get the stride for a particular dimension.
size_type size () const
 Get the size for each dimension.
size_t size (size_t d) const
 Get the size for a specific dimension.
size_t ndims () const
 Get the number of dimensions.
Resize Functions
template<class S >
void resize (const array< size_t, S > &newsize, const T &s)
 resize (n-dim)
template<class S >
void resize (const array< size_t, S > &newsize)
 resize (n-dim) without padding
template<class S >
void reshape (const array< size_t, S > &newsize, const T &s)
 reshape (n-dim)
template<class S >
void reshape (const array< size_t, S > &newsize)
 reshape (n-dim) without padding
Assignment Operators
this_typeoperator= (const this_type &in)
 C++ copy-constructor.

Detailed Description

template<class T, int N, class DERIVED_INFO>
class ivl::array_nd< T, data::normal_image< N, DERIVED_INFO > >

Multi-dimensional array of type T.

This structure is used to define a multidimensional array of type T. The number of dimensions can be specified when constructing an object and can be altered anytime by using methods like resize(const size_array &, const T).

The simpliest way to access an array_nd element is by using operator() and specifying the offset on each dimension, like this:

 int i = a(2, 3, 2) 

An array_nd inherites all the functionality the array class provides, which means that it can also be indexed as an one-dimensional array using the array subscript operator: []. Keep in mind that in array_nd the elements are stored in column-major order like Fortran and Matlab and not like C. So, the offset is computed like this:

offset = row + column*NUMROWS 

Member Function Documentation

template<class T , int N, class DERIVED_INFO >
template<class S >
const T& ivl::array_nd< T, data::normal_image< N, DERIVED_INFO > >::operator() ( const array< size_t, S > &  indx) const [inline]

Selects a single, const element of the array, using a size_array for the coordinates.

template<class T , int N, class DERIVED_INFO >
template<class S >
T& ivl::array_nd< T, data::normal_image< N, DERIVED_INFO > >::operator() ( const array< size_t, S > &  indx) [inline]

Selects a single, mutable element of the array, using a size_array for the coordinates.


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