MapMatrixMixed is a generalised, STL-map-based, sparse(ish) matrix class with mixed indices. More...
#include <map_matrix.h>
Public Types | |
typedef std::map< KEY_TYPE_COL, VALUE_TYPE > | InnerMapMixed |
Typedef to keep the code more readable. More... | |
typedef InnerMapMixed::iterator | InnerMixedIt |
Typedef to keep the code more readable. More... | |
typedef InnerMapMixed::const_iterator | ConstInnerMixedIt |
Typedef to keep the code more readable const version. More... | |
typedef std::map< KEY_TYPE_ROW, std::map< KEY_TYPE_COL, VALUE_TYPE > * > | OuterMapMixed |
Typedef to keep the code more readable. More... | |
typedef OuterMapMixed::iterator | OuterMixedIt |
Typedef to keep the code more readable. More... | |
typedef OuterMapMixed::const_iterator | ConstOuterMixedIt |
Typedef to keep the code more readable const version. More... | |
Public Member Functions | |
MapMatrixMixed () | |
Default (empty) constructor. More... | |
void | operator= (const MapMatrixMixed &)=delete |
Broken assignment operator. More... | |
MapMatrixMixed (const MapMatrixMixed< KEY_TYPE_ROW, KEY_TYPE_COL, VALUE_TYPE > &map_mat) | |
Copy constructor. More... | |
void | copy_column (const KEY_TYPE_COL &j, std::map< KEY_TYPE_ROW, VALUE_TYPE > &copied_map) |
Copy a single column into its own map. More... | |
virtual | ~MapMatrixMixed () |
Destructor. More... | |
void | clear () |
Wipe all entries. More... | |
VALUE_TYPE & | operator() (const KEY_TYPE_ROW &i, const KEY_TYPE_COL &j) |
Return (reference to) entry. Careful: If the entry does not exist then it is created and set to zero. More... | |
VALUE_TYPE | get (const KEY_TYPE_ROW &i, const KEY_TYPE_COL &j) const |
Get an element corresponding to the key (i,j) Searches the container for an element with a key equivalent to (i,j) and returns the element if found, otherwise the default 0 value for the value type is returned. The container is not modified. More... | |
void | output (std::ostream &outfile) |
Dump all non-‘zero’ entries to file. Output is in the format ‘i’, ‘j’, ‘entry[i][j]’. More... | |
unsigned long | nnz () |
Work out number of non-‘zero’ entries. More... | |
unsigned long | nnz () const |
Work out number of non-‘zero’ entries, const version. More... | |
unsigned long | size () |
Work out total number of entries. More... | |
unsigned long | size () const |
Work out total number of entries const version. More... | |
Protected Member Functions | |
VALUE_TYPE * | entry_pt (const KEY_TYPE_ROW &i, const KEY_TYPE_COL &j) |
Return pointer to entry. More... | |
Protected Attributes | |
std::map< KEY_TYPE_ROW, std::map< KEY_TYPE_COL, VALUE_TYPE > * > | Row_pt |
Here's the generalised matrix structure: A map of pointers to the maps that hold the entries in each row. More... | |
MapMatrixMixed is a generalised, STL-map-based, sparse(ish) matrix class with mixed indices.
The matrix is indexed by indices of type KEY_TYPE_ROW and KEY_TYPE_COL and has entries of type VALUE_TYPE.
Careful: If a zero entry is referenced then it is created in memory. Therefore this isn't really a practical sparse matrix scheme. Do not loop over ‘all’ possible indices as even looking at them will inflate the matrix until it occupies as much space as a full one – use (modification of) output routine to retrieve all nonzero entries.
However, this is not a serious restriction, as the main purpose of this class is to allow non-integer indices.
Example of usage:
Definition at line 108 of file map_matrix.h.
typedef InnerMapMixed::const_iterator oomph::MapMatrixMixed< KEY_TYPE_ROW, KEY_TYPE_COL, VALUE_TYPE >::ConstInnerMixedIt |
Typedef to keep the code more readable const version.
Definition at line 124 of file map_matrix.h.
typedef OuterMapMixed::const_iterator oomph::MapMatrixMixed< KEY_TYPE_ROW, KEY_TYPE_COL, VALUE_TYPE >::ConstOuterMixedIt |
Typedef to keep the code more readable const version.
Definition at line 134 of file map_matrix.h.
typedef std::map<KEY_TYPE_COL, VALUE_TYPE> oomph::MapMatrixMixed< KEY_TYPE_ROW, KEY_TYPE_COL, VALUE_TYPE >::InnerMapMixed |
Typedef to keep the code more readable.
Definition at line 118 of file map_matrix.h.
typedef InnerMapMixed::iterator oomph::MapMatrixMixed< KEY_TYPE_ROW, KEY_TYPE_COL, VALUE_TYPE >::InnerMixedIt |
Typedef to keep the code more readable.
Definition at line 121 of file map_matrix.h.
typedef std::map<KEY_TYPE_ROW, std::map<KEY_TYPE_COL, VALUE_TYPE>*> oomph::MapMatrixMixed< KEY_TYPE_ROW, KEY_TYPE_COL, VALUE_TYPE >::OuterMapMixed |
Typedef to keep the code more readable.
Definition at line 128 of file map_matrix.h.
typedef OuterMapMixed::iterator oomph::MapMatrixMixed< KEY_TYPE_ROW, KEY_TYPE_COL, VALUE_TYPE >::OuterMixedIt |
Typedef to keep the code more readable.
Definition at line 131 of file map_matrix.h.
|
inline |
Default (empty) constructor.
Definition at line 112 of file map_matrix.h.
|
inline |
Copy constructor.
Definition at line 138 of file map_matrix.h.
References oomph::MapMatrixMixed< KEY_TYPE_ROW, KEY_TYPE_COL, VALUE_TYPE >::Row_pt.
|
inlinevirtual |
Destructor.
Definition at line 194 of file map_matrix.h.
References oomph::MapMatrixMixed< KEY_TYPE_ROW, KEY_TYPE_COL, VALUE_TYPE >::Row_pt.
|
inline |
Wipe all entries.
Definition at line 209 of file map_matrix.h.
References oomph::MapMatrixMixed< KEY_TYPE_ROW, KEY_TYPE_COL, VALUE_TYPE >::Row_pt.
|
inline |
Copy a single column into its own map.
Definition at line 170 of file map_matrix.h.
References oomph::MapMatrixMixed< KEY_TYPE_ROW, KEY_TYPE_COL, VALUE_TYPE >::Row_pt.
|
inlineprotected |
Return pointer to entry.
Definition at line 412 of file map_matrix.h.
References i, and oomph::MapMatrixMixed< KEY_TYPE_ROW, KEY_TYPE_COL, VALUE_TYPE >::Row_pt.
Referenced by oomph::MapMatrixMixed< KEY_TYPE_ROW, KEY_TYPE_COL, VALUE_TYPE >::operator()().
|
inline |
Get an element corresponding to the key (i,j) Searches the container for an element with a key equivalent to (i,j) and returns the element if found, otherwise the default 0 value for the value type is returned. The container is not modified.
Definition at line 236 of file map_matrix.h.
References i, and oomph::MapMatrixMixed< KEY_TYPE_ROW, KEY_TYPE_COL, VALUE_TYPE >::Row_pt.
|
inline |
Work out number of non-‘zero’ entries.
Definition at line 295 of file map_matrix.h.
References oomph::MapMatrixMixed< KEY_TYPE_ROW, KEY_TYPE_COL, VALUE_TYPE >::Row_pt.
|
inline |
Work out number of non-‘zero’ entries, const version.
Definition at line 325 of file map_matrix.h.
References oomph::MapMatrixMixed< KEY_TYPE_ROW, KEY_TYPE_COL, VALUE_TYPE >::Row_pt.
|
inline |
Return (reference to) entry. Careful: If the entry does not exist then it is created and set to zero.
Definition at line 227 of file map_matrix.h.
References oomph::MapMatrixMixed< KEY_TYPE_ROW, KEY_TYPE_COL, VALUE_TYPE >::entry_pt(), and i.
|
delete |
Broken assignment operator.
|
inline |
Dump all non-‘zero’ entries to file. Output is in the format ‘i’, ‘j’, ‘entry[i][j]’.
Definition at line 262 of file map_matrix.h.
References oomph::MapMatrixMixed< KEY_TYPE_ROW, KEY_TYPE_COL, VALUE_TYPE >::Row_pt.
|
inline |
Work out total number of entries.
Definition at line 357 of file map_matrix.h.
References oomph::MapMatrixMixed< KEY_TYPE_ROW, KEY_TYPE_COL, VALUE_TYPE >::Row_pt.
|
inline |
Work out total number of entries const version.
Definition at line 383 of file map_matrix.h.
References oomph::MapMatrixMixed< KEY_TYPE_ROW, KEY_TYPE_COL, VALUE_TYPE >::Row_pt.
|
protected |
Here's the generalised matrix structure: A map of pointers to the maps that hold the entries in each row.
Definition at line 432 of file map_matrix.h.
Referenced by oomph::MapMatrixMixed< KEY_TYPE_ROW, KEY_TYPE_COL, VALUE_TYPE >::clear(), oomph::MapMatrixMixed< KEY_TYPE_ROW, KEY_TYPE_COL, VALUE_TYPE >::copy_column(), oomph::MapMatrixMixed< KEY_TYPE_ROW, KEY_TYPE_COL, VALUE_TYPE >::entry_pt(), oomph::MapMatrixMixed< KEY_TYPE_ROW, KEY_TYPE_COL, VALUE_TYPE >::get(), oomph::MapMatrix< KEY_TYPE, VALUE_TYPE >::MapMatrix(), oomph::MapMatrixMixed< KEY_TYPE_ROW, KEY_TYPE_COL, VALUE_TYPE >::MapMatrixMixed(), oomph::MapMatrixMixed< KEY_TYPE_ROW, KEY_TYPE_COL, VALUE_TYPE >::nnz(), oomph::MapMatrixMixed< KEY_TYPE_ROW, KEY_TYPE_COL, VALUE_TYPE >::output(), oomph::MapMatrixMixed< KEY_TYPE_ROW, KEY_TYPE_COL, VALUE_TYPE >::size(), and oomph::MapMatrixMixed< KEY_TYPE_ROW, KEY_TYPE_COL, VALUE_TYPE >::~MapMatrixMixed().