OpenGM  2.3.x
Discrete Graphical Model Library
Public Types | Public Member Functions | List of all members
marray::Matrix< T, A > Class Template Reference

Two-dimensional Marray. More...

#include <marray.hxx>

+ Inheritance diagram for marray::Matrix< T, A >:
+ Collaboration diagram for marray::Matrix< T, A >:

Public Types

typedef Marray< T, A > base
 
typedef base::value_type value_type
 
typedef base::pointer pointer
 
typedef base::const_pointer const_pointer
 
typedef base::reference reference
 
typedef base::const_reference const_reference
 
typedef base::iterator iterator
 
typedef base::reverse_iterator reverse_iterator
 
typedef base::const_iterator const_iterator
 
typedef base::const_reverse_iterator const_reverse_iterator
 
typedef base::allocator_type allocator_type
 
- Public Types inherited from marray::Marray< T, A >
typedef View< T, false, A > base
 
typedef base::value_type value_type
 
typedef base::pointer pointer
 
typedef base::const_pointer const_pointer
 
typedef base::reference reference
 
typedef base::const_reference const_reference
 
typedef base::iterator iterator
 
typedef base::reverse_iterator reverse_iterator
 
typedef base::const_iterator const_iterator
 
typedef base::const_reverse_iterator const_reverse_iterator
 
typedef A::template rebind< value_type >::other allocator_type
 
- Public Types inherited from marray::View< T, false, A >
typedef T value_type
 
typedef T ValueType
 
typedef marray_detail::IfBool< isConst, const T *, T * >::type pointer
 
typedef const T * const_pointer
 
typedef marray_detail::IfBool< isConst, const T &, T & >::type reference
 
typedef const T & const_reference
 
typedef Iterator< T, isConst, A > iterator
 
typedef Iterator< T, true, A > const_iterator
 
typedef std::reverse_iterator< iteratorreverse_iterator
 
typedef std::reverse_iterator< const_iteratorconst_reverse_iterator
 
typedef ViewExpression< View< T, isConst, A >, T > base
 
typedef A::template rebind< value_type >::other allocator_type
 
- Public Types inherited from marray::ViewExpression< View< T, isConst, A >, T >
typedef View< T, isConst, A > expression_type
 
typedef T value_type
 

Public Member Functions

 Matrix (const allocator_type &=allocator_type())
 Empty constructor. More...
 
template<class TLocal , bool isConstLocal, class ALocal >
 Matrix (const View< TLocal, isConstLocal, ALocal > &)
 Copy from a View. More...
 
 Matrix (const size_t, const size_t, const T &=T(), const CoordinateOrder &=defaultOrder, const allocator_type &=allocator_type())
 Construct Matrix with initialization. More...
 
 Matrix (const InitializationSkipping &, const size_t, const size_t, const CoordinateOrder &=defaultOrder, const allocator_type &=allocator_type())
 Construct Matrix without initialization. More...
 
template<class E , class Te >
 Matrix (const ViewExpression< E, Te > &, const allocator_type &=allocator_type())
 Construct Matrix from ViewExpression. More...
 
Matrix< T, A > & operator= (const T &)
 Assignment. More...
 
Matrix< T, A > & operator= (const Matrix< T, A > &)
 Assignment. More...
 
template<class TLocal , bool isConstLocal, class ALocal >
Matrix< T, A > & operator= (const View< TLocal, isConstLocal, ALocal > &)
 Assignment from View. More...
 
template<class E , class Te >
Matrix< T, A > & operator= (const ViewExpression< E, Te > &)
 Assignment from ViewExpression. More...
 
void reshape (const size_t, const size_t)
 Reshape. More...
 
void resize (const size_t, const size_t, const T &=T())
 Resize (existing entries are preserved, new entries are initialized). More...
 
void resize (const InitializationSkipping &, const size_t, const size_t)
 Resize (existing entries are preserved). More...
 
- Public Member Functions inherited from marray::Marray< T, A >
 Marray (const allocator_type &=allocator_type())
 Empty constructor. More...
 
 Marray (const T &, const CoordinateOrder &=defaultOrder, const allocator_type &=allocator_type())
 Construct 0-dimensional (scalar) array. More...
 
template<class ShapeIterator >
 Marray (ShapeIterator, ShapeIterator, const T &=T(), const CoordinateOrder &=defaultOrder, const allocator_type &=allocator_type())
 Construct Marray with initialization. More...
 
template<class ShapeIterator >
 Marray (const InitializationSkipping &, ShapeIterator, ShapeIterator, const CoordinateOrder &=defaultOrder, const allocator_type &=allocator_type())
 Construct Marray without initialization. More...
 
 Marray (const Marray< T, A > &)
 Copy from a Marray. More...
 
template<class E , class Te >
 Marray (const ViewExpression< E, Te > &, const allocator_type &=allocator_type())
 Construct Marray from ViewExpression. More...
 
template<class TLocal , bool isConstLocal, class ALocal >
 Marray (const View< TLocal, isConstLocal, ALocal > &)
 Copy from a View. More...
 
 ~Marray ()
 Destructor. More...
 
Marray< T, A > & operator= (const T &)
 Assignment. More...
 
Marray< T, A > & operator= (const Marray< T, A > &)
 Assignment. More...
 
template<class TLocal , bool isConstLocal, class ALocal >
Marray< T, A > & operator= (const View< TLocal, isConstLocal, ALocal > &)
 Assignment from View. More...
 
template<class E , class Te >
Marray< T, A > & operator= (const ViewExpression< E, Te > &)
 
void assign (const allocator_type &=allocator_type())
 Clear Marray. More...
 
template<class ShapeIterator >
void resize (ShapeIterator, ShapeIterator, const T &=T())
 Resize (existing entries are preserved, new entries are initialized). More...
 
template<class ShapeIterator >
void resize (const InitializationSkipping &, ShapeIterator, ShapeIterator)
 Resize (existing entries are preserved). More...
 
- Public Member Functions inherited from marray::View< T, false, A >
 View (const allocator_type &=allocator_type())
 Empty constructor. More...
 
 View (pointer, const allocator_type &=allocator_type())
 Construct View from a scalar. More...
 
 View (const View< T, false, A > &)
 Construct View from a View on mutable data. More...
 
 View (ShapeIterator, ShapeIterator, pointer, const CoordinateOrder &=defaultOrder, const CoordinateOrder &=defaultOrder, const allocator_type &=allocator_type())
 Construct unstrided View. More...
 
 View (ShapeIterator, ShapeIterator, StrideIterator, pointer, const CoordinateOrder &, const allocator_type &=allocator_type())
 Construct strided View. More...
 
View< T, isConst, A > & operator= (const T &)
 Assignment. More...
 
View< T, isConst, A > & operator= (const View< T, true, A > &)
 Assignment. More...
 
View< T, isConst, A > & operator= (const View< T, false, A > &)
 Assignment. More...
 
View< T, isConst, A > & operator= (const View< TLocal, isConstLocal, ALocal > &)
 Assignment. More...
 
View< T, isConst, A > & operator= (const ViewExpression< E, Te > &)
 
void assign (const allocator_type &=allocator_type())
 Clear View. More...
 
void assign (ShapeIterator, ShapeIterator, pointer, const CoordinateOrder &=defaultOrder, const CoordinateOrder &=defaultOrder, const allocator_type &=allocator_type())
 Initialize unstrided View. More...
 
void assign (ShapeIterator, ShapeIterator, StrideIterator, pointer, const CoordinateOrder &, const allocator_type &=allocator_type())
 Initialize strided View. More...
 
const size_t dimension () const
 Get the dimension. More...
 
const size_t size () const
 Get the number of data items. More...
 
const size_t shape (const size_t) const
 Get the shape in one dimension. More...
 
const size_tshapeBegin () const
 Get a constant iterator to the beginning of the shape vector. More...
 
const size_tshapeEnd () const
 Get a constant iterator to the end of the shape vector. More...
 
const size_t strides (const size_t) const
 Get the strides in one dimension. More...
 
const size_tstridesBegin () const
 Get a constant iterator to the beginning of the strides vector. More...
 
const size_tstridesEnd () const
 Get a constant iterator to the end of the strides vector. More...
 
const CoordinateOrdercoordinateOrder () const
 Get the coordinate order used for scalar indexing and iterators. More...
 
const bool isSimple () const
 Determine whether the shape strides equal the strides of the View. More...
 
bool overlaps (const View< TLocal, isConstLocal, ALocal > &) const
 Check whether two Views overlap. More...
 
reference operator() (U)
 Reference data. More...
 
reference operator() (U) const
 Reference data. More...
 
reference operator() (const size_t, const size_t)
 Reference data in a 2-dimensional View by coordinates. More...
 
reference operator() (const size_t, const size_t) const
 Reference data in a 2-dimensional View by coordinates. More...
 
reference operator() (const size_t, const size_t, const size_t)
 Reference data in a 3-dimensional View by coordinates. More...
 
reference operator() (const size_t, const size_t, const size_t) const
 Reference data in a 3-dimensional View by coordinates. More...
 
reference operator() (const size_t, const size_t, const size_t, const size_t)
 Reference data in a 4-dimensional View by coordinates. More...
 
reference operator() (const size_t, const size_t, const size_t, const size_t) const
 Reference data in a 4-dimensional View by coordinates. More...
 
reference operator() (const size_t, const size_t, const size_t, const size_t, const size_t)
 Reference data in a 5-dimensional View by coordinates. More...
 
reference operator() (const size_t, const size_t, const size_t, const size_t, const size_t) const
 Reference data in a 5-dimensional View by coordinates. More...
 
reference operator() (const size_t, const size_t, const size_t, const size_t, const size_t, const size_t, const size_t, const size_t, const size_t, const size_t)
 Reference data in a 10-dimensional View by coordinates. More...
 
reference operator() (const size_t, const size_t, const size_t, const size_t, const size_t, const size_t, const size_t, const size_t, const size_t, const size_t) const
 Reference data in a 10-dimensional View by coordinates. More...
 
void view (BaseIterator, ShapeIterator, View< T, isConst, A > &) const
 Get a sub-view with the same coordinate order. More...
 
void view (BaseIterator, ShapeIterator, const CoordinateOrder &, View< T, isConst, A > &) const
 Get a sub-view. More...
 
View< T, isConst, A > view (BaseIterator, ShapeIterator) const
 Get a sub-view with the same coordinate order. More...
 
View< T, isConst, A > view (BaseIterator, ShapeIterator, const CoordinateOrder &) const
 Get a sub-view. More...
 
void constView (BaseIterator, ShapeIterator, View< T, true, A > &) const
 Get a sub-view to constant data with the same coordinate order. More...
 
void constView (BaseIterator, ShapeIterator, const CoordinateOrder &, View< T, true, A > &) const
 Get a sub-view to constant data. More...
 
View< T, true, A > constView (BaseIterator, ShapeIterator) const
 Get a sub-view to constant data with the same coordinate order. More...
 
View< T, true, A > constView (BaseIterator, ShapeIterator, const CoordinateOrder &) const
 Get a sub-view to constant data. More...
 
iterator begin ()
 Get an iterator to the beginning. More...
 
const_iterator begin () const
 Get an iterator to the beginning. More...
 
iterator end ()
 Get the end-iterator. More...
 
const_iterator end () const
 Get the end-iterator. More...
 
reverse_iterator rbegin ()
 Get a reserve iterator to the beginning. More...
 
const_reverse_iterator rbegin () const
 Get a reserve iterator to the beginning. More...
 
reverse_iterator rend ()
 Get the reverse end-iterator. More...
 
const_reverse_iterator rend () const
 Get the reverse end-iterator. More...
 
void reshape (ShapeIterator, ShapeIterator)
 Reshape the View. More...
 
void permute (CoordinateIterator)
 Permute dimensions. More...
 
void transpose (const size_t, const size_t)
 Exchange two dimensions. More...
 
void transpose ()
 Reverse dimensions. More...
 
void shift (const int)
 Cycle shift dimensions. More...
 
void squeeze ()
 Remove singleton dimensions by setting their coordinates to zero. More...
 
View< T, isConst, A > reshapedView (ShapeIterator, ShapeIterator) const
 Get a reshaped View. More...
 
View< T, isConst, A > permutedView (CoordinateIterator) const
 Get a View with permuted dimensions. More...
 
View< T, isConst, A > transposedView (const size_t, const size_t) const
 Get a View with two dimensions exchanged. More...
 
View< T, isConst, A > transposedView () const
 Get a View with dimensions reversed. More...
 
View< T, isConst, A > shiftedView (const int) const
 Get a View which dimensions cycle shifted. More...
 
View< T, isConst, A > boundView (const size_t, const size_t=0) const
 Get a View where one coordinate is bound to a value. More...
 
View< T, isConst, A > squeezedView () const
 Get a View where all singleton dimensions have been removed by setting their coordinates to zero. More...
 
void coordinatesToIndex (CoordinateIterator, size_t &) const
 Compute the index that corresponds to a sequence of coordinates. More...
 
void coordinatesToOffset (CoordinateIterator, size_t &) const
 Compute the offset that corresponds to a sequence of coordinates. More...
 
void indexToCoordinates (size_t, CoordinateIterator) const
 Compute the coordinate sequence that corresponds to an index. More...
 
void indexToOffset (size_t, size_t &) const
 Compute the offset that corresponds to an index. More...
 
std::string asString (const StringStyle &=MatrixStyle) const
 Output as string. More...
 
- Public Member Functions inherited from marray::ViewExpression< View< T, isConst, A >, T >
const size_t dimension () const
 
const size_t size () const
 
const size_t shape (const size_t j) const
 
const size_tshapeBegin () const
 
const size_tshapeEnd () const
 
bool overlaps (const View< Tv, isConst, A > &v) const
 
const CoordinateOrdercoordinateOrder () const
 
const bool isSimple () const
 
const T & operator() (Accessor it) const
 
const T & operator() (const size_t c0, const size_t c1) const
 
const T & operator() (const size_t c0, const size_t c1, const size_t c2) const
 
const T & operator() (const size_t c0, const size_t c1, const size_t c2, const size_t c3) const
 
const T & operator() (const size_t c0, const size_t c1, const size_t c2, const size_t c3, const size_t c4) const
 
const T & operator[] (const size_t offset) const
 
 operator View< T, isConst, A > & ()
 
 operator View< T, isConst, A >const & () const
 

Detailed Description

template<class T, class A>
class marray::Matrix< T, A >

Two-dimensional Marray.

Definition at line 51 of file marray.hxx.

Member Typedef Documentation

template<class T, class A>
typedef base::allocator_type marray::Matrix< T, A >::allocator_type

Definition at line 700 of file marray.hxx.

template<class T, class A>
typedef Marray<T, A> marray::Matrix< T, A >::base

Definition at line 688 of file marray.hxx.

template<class T, class A>
typedef base::const_iterator marray::Matrix< T, A >::const_iterator

Definition at line 698 of file marray.hxx.

template<class T, class A>
typedef base::const_pointer marray::Matrix< T, A >::const_pointer

Definition at line 693 of file marray.hxx.

template<class T, class A>
typedef base::const_reference marray::Matrix< T, A >::const_reference

Definition at line 695 of file marray.hxx.

template<class T, class A>
typedef base::const_reverse_iterator marray::Matrix< T, A >::const_reverse_iterator

Definition at line 699 of file marray.hxx.

template<class T, class A>
typedef base::iterator marray::Matrix< T, A >::iterator

Definition at line 696 of file marray.hxx.

template<class T, class A>
typedef base::pointer marray::Matrix< T, A >::pointer

Definition at line 691 of file marray.hxx.

template<class T, class A>
typedef base::reference marray::Matrix< T, A >::reference

Definition at line 694 of file marray.hxx.

template<class T, class A>
typedef base::reverse_iterator marray::Matrix< T, A >::reverse_iterator

Definition at line 697 of file marray.hxx.

template<class T, class A>
typedef base::value_type marray::Matrix< T, A >::value_type

Definition at line 690 of file marray.hxx.

Constructor & Destructor Documentation

template<class T , class A >
marray::Matrix< T, A >::Matrix ( const allocator_type allocator = allocator_type())
inline

Empty constructor.

Parameters
allocatorAllocator.

Definition at line 4996 of file marray.hxx.

template<class T , class A >
template<class TLocal , bool isConstLocal, class ALocal >
marray::Matrix< T, A >::Matrix ( const View< TLocal, isConstLocal, ALocal > &  in)
inline

Copy from a View.

Parameters
inView (source).

Definition at line 5012 of file marray.hxx.

template<class T, class A >
marray::Matrix< T, A >::Matrix ( const size_t  n1,
const size_t  n2,
const T &  value = T(),
const CoordinateOrder coordinateOrder = defaultOrder,
const allocator_type allocator = allocator_type() 
)
inline

Construct Matrix with initialization.

Parameters
n1size in 1st dimension.
n2size in 2nd dimension.
valueInitial value of entries.
coordinateOrderFlag specifying whether FirstMajorOrder or LastMajorOrder is to be used.
allocatorAllocator.

Definition at line 5068 of file marray.hxx.

template<class T, class A >
marray::Matrix< T, A >::Matrix ( const InitializationSkipping is,
const size_t  n1,
const size_t  n2,
const CoordinateOrder coordinateOrder = defaultOrder,
const allocator_type allocator = allocator_type() 
)
inline

Construct Matrix without initialization.

Parameters
isFlag to be set to SkipInitialization.
n1Size in 1st dimension.
n2Size in 2nd dimension.
coordinateOrderFlag specifying whether FirstMajorOrder or LastMajorOrder is to be used.
allocatorAllocator.

Definition at line 5102 of file marray.hxx.

template<class T , class A >
template<class E , class Te>
marray::Matrix< T, A >::Matrix ( const ViewExpression< E, Te > &  expression,
const allocator_type allocator = allocator_type() 
)
inline

Construct Matrix from ViewExpression.

Parameters
expressionViewExpression.
allocatorAllocator.

Definition at line 5129 of file marray.hxx.

+ Here is the call graph for this function:

Member Function Documentation

template<class T, class A >
Matrix< T, A > & marray::Matrix< T, A >::operator= ( const T &  value)
inline

Assignment.

Parameters
valueValue.

All entries are set to value.

Definition at line 5149 of file marray.hxx.

template<class T, class A>
Matrix< T, A > & marray::Matrix< T, A >::operator= ( const Matrix< T, A > &  in)
inline

Assignment.

Parameters
inMatrix (source).

Definition at line 5167 of file marray.hxx.

template<class T , class A >
template<class TLocal , bool isConstLocal, class ALocal >
Matrix< T, A > & marray::Matrix< T, A >::operator= ( const View< TLocal, isConstLocal, ALocal > &  in)
inline

Assignment from View.

Parameters
inView (source).

Definition at line 5185 of file marray.hxx.

+ Here is the call graph for this function:

template<class T , class A >
template<class E , class Te>
Matrix< T, A > & marray::Matrix< T, A >::operator= ( const ViewExpression< E, Te > &  expression)
inline

Assignment from ViewExpression.

Parameters
expressionViewExpression.

Definition at line 5226 of file marray.hxx.

+ Here is the call graph for this function:

template<class T , class A >
void marray::Matrix< T, A >::reshape ( const size_t  n1,
const size_t  n2 
)
inline

Reshape.

Parameters
n1New extension in 1st dimension.
n2New extension in 1st dimension.

Is is necessary that n1*n2 == size().

Definition at line 5296 of file marray.hxx.

template<class T, class A >
void marray::Matrix< T, A >::resize ( const size_t  n1,
const size_t  n2,
const T &  value = T() 
)
inline

Resize (existing entries are preserved, new entries are initialized).

Parameters
n1New extension in 1st dimension.
n2New extension in 1st dimension.
valueInitial value for newly allocated entries.

Definition at line 5245 of file marray.hxx.

+ Here is the caller graph for this function:

template<class T, class A >
void marray::Matrix< T, A >::resize ( const InitializationSkipping is,
const size_t  n1,
const size_t  n2 
)
inline

Resize (existing entries are preserved).

Parameters
isFlag to be set to SkipInitialization.
n1New extension in 1st dimension.
n2New extension in 1st dimension.

Definition at line 5270 of file marray.hxx.