MRPT  1.9.9
mrpt::math::CMatrixTemplateObjects< T > Class Template Reference

Detailed Description

template<class T>
class mrpt::math::CMatrixTemplateObjects< T >

This template class extends the class "CMatrixTemplate" for storing "objects" at each matrix entry.

This class allows a very efficient representation of sparse matrixes where each cell is an arbitrary C++ class, but its use must carefully observe the following rules:

  • The type in the template especialization MUST be a class with a proper default constructor.
  • Initially all entries are set to nullptr.
  • Pointers can be manually asigned, or automatically created through a call to "CMatrixTemplateObjects<T>::allocAllObjects"
  • Independently of how pointers are asigned, memory will be free by destroying objects for each non-NULL entry in the matrix. In some special situations, the user can indicate not to free those objects by calling "CMatrixTemplateObjects<T>::setDestroyBehavior", then it is up to the user to free the memory. In all cases the default behavior is to free the memory.
  • Asignament operator with matrixes will COPY THE POINTERS, thus a copy of objects is not performed.
  • WARNING: Objects are not deleted while shrinking the matrix by calling "setSize", thus please call ""CMatrixTemplateObjects<T>::freeAllObjects" or manually delete objects before shrinking.
See also
CMatrixTemplate

Definition at line 45 of file CMatrixTemplateObjects.h.

#include <mrpt/math/CMatrixTemplateObjects.h>

Inheritance diagram for mrpt::math::CMatrixTemplateObjects< T >:
Inheritance graph

Public Types

using value_type = T *
 The type of the matrix elements. More...
 
using reference = T * &
 
using const_reference = const T * &
 
using size_type = std::size_t
 
using difference_type = std::ptrdiff_t
 

Public Member Functions

 CMatrixTemplateObjects (const CMatrixTemplate< T > &m)
 Copy constructor. More...
 
 CMatrixTemplateObjects (size_t row=3, size_t col=3)
 Constructor. More...
 
virtual void setSize (size_t row, size_t col)
 Changes the size of matrix. More...
 
virtual ~CMatrixTemplateObjects ()
 Destructor. More...
 
void freeAllObjects ()
 Delete all the objects in the matrix and set all entries to nullptr. More...
 
CMatrixTemplateObjectsoperator= (const CMatrixTemplateObjects &m)
 Assignment operator. More...
 
void setDestroyBehavior (bool freeObjects=true)
 Sets the behavior on matrix destroy. More...
 
void allocAllObjects ()
 Alloc memory for all the non-NULL entries in the matrix. More...
 
void ASSERT_ENOUGHROOM (size_t r, size_t c) const
 Checks whether the rows [r-N,r+N] and the columns [c-N,c+N] are present in the matrix. More...
 
void fillAll (const T * &val)
 
void swap (CMatrixTemplate< T * > &o)
 Swap with another matrix very efficiently (just swaps a pointer and two integer values). More...
 
size_t rows () const
 Number of rows in the matrix. More...
 
size_t cols () const
 Number of columns in the matrix. More...
 
CMatrixTemplateSize size () const
 Get a 2-vector with [NROWS NCOLS] (as in MATLAB command size(x)) More...
 
void setSize (size_t row, size_t col, bool zeroNewElements=false)
 Changes the size of matrix, maintaining the previous contents. More...
 
void resize (const CMatrixTemplateSize &siz, bool zeroNewElements=false)
 This method just checks has no effects in this class, but raises an exception if the expected size does not match. More...
 
T * & operator() (size_t row, size_t col)
 Subscript operator to get/set individual elements. More...
 
const T * & operator() (size_t row, size_t col) const
 Subscript operator to get individual elements. More...
 
T * & operator() (size_t ith)
 Subscript operator to get/set an individual element from a row or column matrix. More...
 
T * operator() (size_t ith) const
 Subscript operator to get/set an individual element from a row or column matrix. More...
 
CMatrixTemplate< T * > operator() (const size_t row1, const size_t row2, const size_t col1, const size_t col2) const
 Subscript operator to get a submatrix. More...
 
void set_unsafe (size_t row, size_t col, const T * &v)
 Fast but unsafe method to write a value in the matrix. More...
 
const T * & get_unsafe (size_t row, size_t col) const
 Fast but unsafe method to read a value from the matrix. More...
 
T * & get_unsafe (size_t row, size_t col)
 Fast but unsafe method to get a reference from the matrix. More...
 
T * * get_unsafe_row (size_t row)
 Fast but unsafe method to obtain a pointer to a given row of the matrix (Use only in time critical applications) More...
 
const T * * get_unsafe_row (size_t row) const
 Fast but unsafe method to obtain a pointer to a given row of the matrix (Use only in critical applications) More...
 
void extractSubmatrix (const size_t row1, const size_t row2, const size_t col1, const size_t col2, CMatrixTemplate< T * > &out) const
 Get a submatrix, given its bounds. More...
 
void extractSubmatrix (const size_t row1, const size_t row2, const size_t col1, const size_t col2, EIGEN_MATRIX &out) const
 
void extractRows (size_t firstRow, size_t lastRow, CMatrixTemplate< T * > &out) const
 Gets a series of contiguous rows. More...
 
void extractColumns (size_t firstCol, size_t lastCol, CMatrixTemplate< T * > &out) const
 Gets a series of contiguous columns. More...
 
void extractCol (size_t nCol, std::vector< T * > &out, int startingRow=0) const
 Returns a given column to a vector (without modifying the matrix) More...
 
void extractCol (size_t nCol, CMatrixTemplate< T * > &out, int startingRow=0) const
 Gets a given column to a vector (without modifying the matrix) More...
 
void appendRow (const std::vector< T * > &in)
 Appends a new row to the MxN matrix from a 1xN vector. More...
 
void appendCol (const std::vector< T * > &in)
 Appends a new column to the matrix from a vector. More...
 
void insertCol (size_t nCol, const std::vector< T * > &in)
 Inserts a column from a vector, replacing the current contents of that column. More...
 
void getAsVector (std::vector< T * > &out) const
 Returns a vector containing the matrix's values. More...
 

Protected Member Functions

void realloc (size_t row, size_t col, bool newElementsToZero=false)
 Internal use only: It reallocs the memory for the 2D matrix, maintaining the previous contents if posible. More...
 

Protected Attributes

T * ** m_Val
 
size_t m_Rows
 
size_t m_Cols
 

Private Attributes

bool m_freeObjects
 

Member Typedef Documentation

◆ const_reference

using mrpt::math::CMatrixTemplate< T * >::const_reference = const T * &
inherited

Definition at line 77 of file CMatrixTemplate.h.

◆ difference_type

Definition at line 79 of file CMatrixTemplate.h.

◆ reference

using mrpt::math::CMatrixTemplate< T * >::reference = T * &
inherited

Definition at line 76 of file CMatrixTemplate.h.

◆ size_type

using mrpt::math::CMatrixTemplate< T * >::size_type = std::size_t
inherited

Definition at line 78 of file CMatrixTemplate.h.

◆ value_type

using mrpt::math::CMatrixTemplate< T * >::value_type = T *
inherited

The type of the matrix elements.

Definition at line 75 of file CMatrixTemplate.h.

Constructor & Destructor Documentation

◆ CMatrixTemplateObjects() [1/2]

template<class T >
mrpt::math::CMatrixTemplateObjects< T >::CMatrixTemplateObjects ( const CMatrixTemplate< T > &  m)
inline

Copy constructor.

Definition at line 53 of file CMatrixTemplateObjects.h.

◆ CMatrixTemplateObjects() [2/2]

template<class T >
mrpt::math::CMatrixTemplateObjects< T >::CMatrixTemplateObjects ( size_t  row = 3,
size_t  col = 3 
)
inline

Constructor.

Definition at line 60 of file CMatrixTemplateObjects.h.

◆ ~CMatrixTemplateObjects()

Member Function Documentation

◆ allocAllObjects()

template<class T >
void mrpt::math::CMatrixTemplateObjects< T >::allocAllObjects ( )
inline

Alloc memory for all the non-NULL entries in the matrix.

See the general description of the class on the top.

Definition at line 119 of file CMatrixTemplateObjects.h.

◆ appendCol()

void mrpt::math::CMatrixTemplate< T * >::appendCol ( const std::vector< T * > &  in)
inlineinherited

Appends a new column to the matrix from a vector.

The length of the vector must match the number of rows of the matrix, unless it is (0,0).

Exceptions
std::exceptionOn size mismatch.
See also
extractCol
appendRow

Definition at line 647 of file CMatrixTemplate.h.

◆ appendRow()

void mrpt::math::CMatrixTemplate< T * >::appendRow ( const std::vector< T * > &  in)
inlineinherited

Appends a new row to the MxN matrix from a 1xN vector.

The lenght of the vector must match the width of the matrix, unless it's empty: in that case the matrix is resized to 1xN.

// ...
M.appendRow(v);
M.appendRow(w);
Exceptions
std::exceptionOn incorrect vector length.
See also
extractRow
appendCol

Definition at line 618 of file CMatrixTemplate.h.

◆ ASSERT_ENOUGHROOM()

void mrpt::math::CMatrixTemplate< T * >::ASSERT_ENOUGHROOM ( size_t  r,
size_t  c 
) const
inlineinherited

Checks whether the rows [r-N,r+N] and the columns [c-N,c+N] are present in the matrix.

Definition at line 148 of file CMatrixTemplate.h.

◆ cols()

size_t mrpt::math::CMatrixTemplate< T * >::cols ( ) const
inlineinherited

Number of columns in the matrix.

See also
rows(), getColCount, nr, nc

Definition at line 300 of file CMatrixTemplate.h.

◆ extractCol() [1/2]

void mrpt::math::CMatrixTemplate< T * >::extractCol ( size_t  nCol,
std::vector< T * > &  out,
int  startingRow = 0 
) const
inlineinherited

Returns a given column to a vector (without modifying the matrix)

Exceptions
std::exceptionOn index out of bounds

Definition at line 572 of file CMatrixTemplate.h.

◆ extractCol() [2/2]

void mrpt::math::CMatrixTemplate< T * >::extractCol ( size_t  nCol,
CMatrixTemplate< T * > &  out,
int  startingRow = 0 
) const
inlineinherited

Gets a given column to a vector (without modifying the matrix)

Exceptions
std::exceptionOn index out of bounds

Definition at line 589 of file CMatrixTemplate.h.

◆ extractColumns()

void mrpt::math::CMatrixTemplate< T * >::extractColumns ( size_t  firstCol,
size_t  lastCol,
CMatrixTemplate< T * > &  out 
) const
inlineinherited

Gets a series of contiguous columns.

Exceptions
std::logic_errorOn index out of bounds
See also
extractColumn
extractRows

Definition at line 562 of file CMatrixTemplate.h.

◆ extractRows()

void mrpt::math::CMatrixTemplate< T * >::extractRows ( size_t  firstRow,
size_t  lastRow,
CMatrixTemplate< T * > &  out 
) const
inlineinherited

Gets a series of contiguous rows.

Exceptions
std::logic_errorOn index out of bounds
See also
extractRow
extractColumns

Definition at line 550 of file CMatrixTemplate.h.

◆ extractSubmatrix() [1/2]

void mrpt::math::CMatrixTemplate< T * >::extractSubmatrix ( const size_t  row1,
const size_t  row2,
const size_t  col1,
const size_t  col2,
CMatrixTemplate< T * > &  out 
) const
inlineinherited

Get a submatrix, given its bounds.

See also
extractSubmatrixSymmetricalBlocks

Definition at line 506 of file CMatrixTemplate.h.

◆ extractSubmatrix() [2/2]

void mrpt::math::CMatrixTemplate< T * >::extractSubmatrix ( const size_t  row1,
const size_t  row2,
const size_t  col1,
const size_t  col2,
EIGEN_MATRIX &  out 
) const
inlineinherited

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

Definition at line 526 of file CMatrixTemplate.h.

◆ fillAll()

void mrpt::math::CMatrixTemplate< T * >::fillAll ( const T * &  val)
inlineinherited

Fill all the elements with a given value (Note: named "fillAll" since "fill" will be used by child classes)

Definition at line 156 of file CMatrixTemplate.h.

◆ freeAllObjects()

template<class T >
void mrpt::math::CMatrixTemplateObjects< T >::freeAllObjects ( )
inline

Delete all the objects in the matrix and set all entries to nullptr.

Definition at line 85 of file CMatrixTemplateObjects.h.

Referenced by mrpt::math::CMatrixTemplateObjects< T >::~CMatrixTemplateObjects().

◆ get_unsafe() [1/2]

const T * & mrpt::math::CMatrixTemplate< T * >::get_unsafe ( size_t  row,
size_t  col 
) const
inlineinherited

Fast but unsafe method to read a value from the matrix.

Definition at line 439 of file CMatrixTemplate.h.

◆ get_unsafe() [2/2]

T * & mrpt::math::CMatrixTemplate< T * >::get_unsafe ( size_t  row,
size_t  col 
)
inlineinherited

Fast but unsafe method to get a reference from the matrix.

Definition at line 456 of file CMatrixTemplate.h.

◆ get_unsafe_row() [1/2]

T * * mrpt::math::CMatrixTemplate< T * >::get_unsafe_row ( size_t  row)
inlineinherited

Fast but unsafe method to obtain a pointer to a given row of the matrix (Use only in time critical applications)

Definition at line 474 of file CMatrixTemplate.h.

◆ get_unsafe_row() [2/2]

const T * * mrpt::math::CMatrixTemplate< T * >::get_unsafe_row ( size_t  row) const
inlineinherited

Fast but unsafe method to obtain a pointer to a given row of the matrix (Use only in critical applications)

Definition at line 491 of file CMatrixTemplate.h.

◆ getAsVector()

void mrpt::math::CMatrixTemplate< T * >::getAsVector ( std::vector< T * > &  out) const
inlineinherited

Returns a vector containing the matrix's values.

Definition at line 680 of file CMatrixTemplate.h.

◆ insertCol()

void mrpt::math::CMatrixTemplate< T * >::insertCol ( size_t  nCol,
const std::vector< T * > &  in 
)
inlineinherited

Inserts a column from a vector, replacing the current contents of that column.

Exceptions
std::exceptionOn index out of bounds
See also
extractCol

Definition at line 667 of file CMatrixTemplate.h.

◆ operator()() [1/5]

T * & mrpt::math::CMatrixTemplate< T * >::operator() ( size_t  row,
size_t  col 
)
inlineinherited

Subscript operator to get/set individual elements.

Definition at line 326 of file CMatrixTemplate.h.

◆ operator()() [2/5]

const T * & mrpt::math::CMatrixTemplate< T * >::operator() ( size_t  row,
size_t  col 
) const
inlineinherited

Subscript operator to get individual elements.

Definition at line 343 of file CMatrixTemplate.h.

◆ operator()() [3/5]

T * & mrpt::math::CMatrixTemplate< T * >::operator() ( size_t  ith)
inlineinherited

Subscript operator to get/set an individual element from a row or column matrix.

Exceptions
std::exceptionIf the object is not a column or row matrix.

Definition at line 362 of file CMatrixTemplate.h.

◆ operator()() [4/5]

T * mrpt::math::CMatrixTemplate< T * >::operator() ( size_t  ith) const
inlineinherited

Subscript operator to get/set an individual element from a row or column matrix.

Exceptions
std::exceptionIf the object is not a column or row matrix.

Definition at line 393 of file CMatrixTemplate.h.

◆ operator()() [5/5]

CMatrixTemplate<T * > mrpt::math::CMatrixTemplate< T * >::operator() ( const size_t  row1,
const size_t  row2,
const size_t  col1,
const size_t  col2 
) const
inlineinherited

Subscript operator to get a submatrix.

Definition at line 494 of file CMatrixTemplate.h.

◆ operator=()

◆ realloc()

void mrpt::math::CMatrixTemplate< T * >::realloc ( size_t  row,
size_t  col,
bool  newElementsToZero = false 
)
inlineprotectedinherited

Internal use only: It reallocs the memory for the 2D matrix, maintaining the previous contents if posible.

Definition at line 88 of file CMatrixTemplate.h.

◆ resize()

void mrpt::math::CMatrixTemplate< T * >::resize ( const CMatrixTemplateSize siz,
bool  zeroNewElements = false 
)
inlineinherited

This method just checks has no effects in this class, but raises an exception if the expected size does not match.

Definition at line 318 of file CMatrixTemplate.h.

◆ rows()

size_t mrpt::math::CMatrixTemplate< T * >::rows ( ) const
inlineinherited

Number of rows in the matrix.

See also
rows(), getColCount, nr, nc

Definition at line 296 of file CMatrixTemplate.h.

◆ set_unsafe()

void mrpt::math::CMatrixTemplate< T * >::set_unsafe ( size_t  row,
size_t  col,
const T * &  v 
)
inlineinherited

Fast but unsafe method to write a value in the matrix.

Definition at line 422 of file CMatrixTemplate.h.

◆ setDestroyBehavior()

template<class T >
void mrpt::math::CMatrixTemplateObjects< T >::setDestroyBehavior ( bool  freeObjects = true)
inline

Sets the behavior on matrix destroy.

See the general description of the class on the top.

Definition at line 111 of file CMatrixTemplateObjects.h.

References mrpt::math::CMatrixTemplateObjects< T >::m_freeObjects.

◆ setSize() [1/2]

template<class T >
virtual void mrpt::math::CMatrixTemplateObjects< T >::setSize ( size_t  row,
size_t  col 
)
inlinevirtual

Changes the size of matrix.

Definition at line 70 of file CMatrixTemplateObjects.h.

References mrpt::math::CMatrixTemplate< T >::realloc().

◆ setSize() [2/2]

void mrpt::math::CMatrixTemplate< T * >::setSize ( size_t  row,
size_t  col,
bool  zeroNewElements = false 
)
inlineinherited

Changes the size of matrix, maintaining the previous contents.

Definition at line 311 of file CMatrixTemplate.h.

◆ size()

CMatrixTemplateSize mrpt::math::CMatrixTemplate< T * >::size ( ) const
inlineinherited

Get a 2-vector with [NROWS NCOLS] (as in MATLAB command size(x))

Definition at line 302 of file CMatrixTemplate.h.

◆ swap()

void mrpt::math::CMatrixTemplate< T * >::swap ( CMatrixTemplate< T * > &  o)
inlineinherited

Swap with another matrix very efficiently (just swaps a pointer and two integer values).

Definition at line 164 of file CMatrixTemplate.h.

Member Data Documentation

◆ m_Cols

size_t mrpt::math::CMatrixTemplate< T * >::m_Cols
protectedinherited

Definition at line 83 of file CMatrixTemplate.h.

◆ m_freeObjects

◆ m_Rows

size_t mrpt::math::CMatrixTemplate< T * >::m_Rows
protectedinherited

Definition at line 83 of file CMatrixTemplate.h.

◆ m_Val

T * ** mrpt::math::CMatrixTemplate< T * >::m_Val
protectedinherited

Definition at line 82 of file CMatrixTemplate.h.




Page generated by Doxygen 1.8.14 for MRPT 1.9.9 Git: 7d5e6d718 Fri Aug 24 01:51:28 2018 +0200 at lun nov 2 08:35:50 CET 2020