Esta es una clase matriz muy chirrisquitica almacenada como una matriz rala implementada con Map. Más...
#include <Matrix_Map.h>
Tipos públicos | |
| typedef E | value_type |
| Tipo del objeto almacenado, similar al nombre usado en STL. Más... | |
| typedef value_type & | reference |
| Tipo del objeto almacenado, similar al nombre usado en STL. Más... | |
| typedef const value_type & | const_reference |
| Tipo del objeto almacenado, similar al nombre usado en STL. Más... | |
| typedef unsigned | size_type |
| Tipo del tamaño de un objeto, similar al nombre usado en STL. Más... | |
Métodos públicos | |
| Matrix_Map (unsigned m=1, unsigned n=1) | |
| Constructor de vector. Más... | |
| Matrix_Map (const Matrix_Map &o) | |
| Constructor de copia. Más... | |
| Matrix_Map (const value_type V) | |
Matriz escalar de valor V. Más... | |
| ~Matrix_Map () | |
| Destructor. Más... | |
| unsigned | rows () const |
| Cantidad de filas de la matriz. Más... | |
| unsigned | cols () const |
| Cantidad de columnas de la Matriz. Más... | |
| unsigned | size () const |
| Cantidad de valores almacenados en la matriz. Más... | |
| unsigned | count () const |
| Cantidad de valores almacenados en la matriz. Más... | |
| size_type | capacity () const |
| Cantidad máxima posible de valores diferentes que pueden ser almacenados en la matriz. Más... | |
| Matrix_Map & | operator= (const Matrix_Map &o) |
Sinónimo de this->copy(o) Más... | |
| Matrix_Map & | copy (const Matrix_Map &o) |
Copia desde "o". Más... | |
| Matrix_Map & | move (Matrix_Map &o) |
Traslada el valor de "o" a "*this". Más... | |
| Matrix_Map & | swap (Matrix_Map &o) |
Intercambia los valores de "*this" y "o". Más... | |
| bool | equals (const Matrix_Map &o) const |
| ¿¿¿ (*this==o) ??? Más... | |
| bool | same (const Matrix_Map &o) const |
Retorna true si "o" comparte sus valores con "*this". Más... | |
| reference | operator() (unsigned, unsigned) |
| Retorna una referencia al elemento [i,j] de la matriz. Más... | |
| const_reference | operator() (unsigned, unsigned) const |
Retorna una referencia al elemento [i,j] de la matriz ( const ). Más... | |
| void | reSize (unsigned, unsigned) |
| Le cambia las dimensiones a la matriz. Más... | |
| void | reShape (unsigned, unsigned) |
| Le ajusta las dimensiones a la matriz. Más... | |
| void | setDefault (const E &same) |
Define el escalar que por defecto está en todas las entradas de la Matrix_Map. Más... | |
| const E & | getDefault () |
Valor almacenado en la mayor parte de la Matrix_Map. Más... | |
| void | reserve (size_type _Count) |
Ajusta la matriz para que pueda almacenar n valores diferentes a getDefault(). Más... | |
| void | reSize (unsigned newsize) |
| Le cambia el tamaño máximo posible a la matriz. Más... | |
| void | clear () |
Deja el valor de *this en el valor en que lo inicializa el constructor de vector. Más... | |
Tipos privados | |
| typedef std::map< std::pair < unsigned, unsigned >, E > | Diccionario |
Métodos privados | |
| void | add (const Matrix_Map &) |
Le suma a "*this" la matriz "O". Más... | |
| void | substract (const Matrix_Map &) |
Le resta a "*this" la matriz "O". Más... | |
| void | multiply (const Matrix_Map &, const Matrix_Map &) |
Calcula la multiplicación A * B y la almacena en "*this". Más... | |
Atributos privados | |
| Diccionario | m_dicc |
| Vector que contiene los valores de la matiz. Más... | |
| unsigned | m_rows |
| Cantidad de filas de la matriz. Más... | |
| unsigned | m_cols |
| Cantidad de columnas de la matriz. Más... | |
| E | m_same |
Valor almacenado en la mayor parte de la Matrix_Map. Más... | |
Amigas | |
| template<class T > | |
| class | test_Matrix_Map |
| Datos de prueba para la clase. Más... | |
| bool | operator== (const Matrix_Map &p, const Matrix_Map &q) |
| ¿¿¿ (p == q) ??? Más... | |
| bool | operator!= (const Matrix_Map &p, const Matrix_Map &q) |
| ¿¿¿ (p != q) ??? Más... | |
| Matrix_Map | operator+ (const Matrix_Map &A, const Matrix_Map &B) |
Retorna A+B. Más... | |
| Matrix_Map | operator- (const Matrix_Map &A, const Matrix_Map &B) |
Retorna A-B. Más... | |
| Matrix_Map | operator* (const Matrix_Map &A, const Matrix_Map &B) |
Retorna A*B. Más... | |
| template<class T > | |
| bool | check_ok (const Matrix_Map< T > &M) |
| Verifica la invariante de la clase. Más... | |
Esta es una clase matriz muy chirrisquitica almacenada como una matriz rala implementada con Map.
rows() x cols().reSize().E debe incluir un neutro para la adición, cuyo valor debe poderse obtener invocando el convertidor Matrix_Map<E>::value_type().Matrix_Map<E>::value_type y debe existir el valor Matrix_Map<E>::value_type(). Definición en la línea 37 del archivo Matrix_Map.h.
| typedef E Mx::Matrix_Map< E >::value_type |
Tipo del objeto almacenado, similar al nombre usado en STL.
Definición en la línea 40 del archivo Matrix_Map.h.
| typedef value_type& Mx::Matrix_Map< E >::reference |
Tipo del objeto almacenado, similar al nombre usado en STL.
Definición en la línea 42 del archivo Matrix_Map.h.
| typedef const value_type& Mx::Matrix_Map< E >::const_reference |
Tipo del objeto almacenado, similar al nombre usado en STL.
Definición en la línea 44 del archivo Matrix_Map.h.
| typedef unsigned Mx::Matrix_Map< E >::size_type |
Tipo del tamaño de un objeto, similar al nombre usado en STL.
Definición en la línea 46 del archivo Matrix_Map.h.
|
private |
Definición en la línea 107 del archivo Matrix_Map.h.
|
inline |
Constructor de vector.
n * m valores de la matriz."value_type" tiene un constructor de vector, lo usar para inicializar cada uno de los valores de la matriz; de lo contrario, los deja tal cual están en la memoria."value_type" es uno de los tipos escalares básicos, como lo son int o float, los valores almacenados en la matriz quedan tal cual están y no son inicializados. m * n > 0 (m > 0) && (n > 0) Definición en la línea 219 del archivo Matrix_Map.h.
|
inline |
|
inline |
Matriz escalar de valor V.
Constructor a partir de Matrix_Map<E>::value_type(V).
"V" Definición en la línea 51 del archivo Matrix_Map.h.
|
inline |
Destructor.
Definición en la línea 237 del archivo Matrix_Map.h.
|
inline |
Cantidad de filas de la matriz.
Definición en la línea 54 del archivo Matrix_Map.h.
|
inline |
Cantidad de columnas de la Matriz.
Definición en la línea 55 del archivo Matrix_Map.h.
|
inline |
Cantidad de valores almacenados en la matriz.
Definición en la línea 56 del archivo Matrix_Map.h.
|
inline |
Cantidad de valores almacenados en la matriz.
Definición en la línea 57 del archivo Matrix_Map.h.
|
inline |
Cantidad máxima posible de valores diferentes que pueden ser almacenados en la matriz.
Definición en la línea 59 del archivo Matrix_Map.h.
|
inline |
Sinónimo de this->copy(o)
Definición en la línea 61 del archivo Matrix_Map.h.
| Matrix_Map< E > & Mx::Matrix_Map< E >::copy | ( | const Matrix_Map< E > & | o | ) |
Copia desde "o".
"o" sobre "*this", de forma que el nuevo valor de "*this" sea un duplicado exacto del valor de "o"."*this" se pierde."o" mantiene su valor anterior."o" cambia, el de "*this" no cambiará, y viceversa, pues la copia es una copia profunda; no es superficial."*this" es "o" entonces su valor no cambia. *this == o .Definición en la línea 275 del archivo Matrix_Map.h.
| Matrix_Map< E > & Mx::Matrix_Map< E >::move | ( | Matrix_Map< E > & | o | ) |
Traslada el valor de "o" a "*this".
"*this" se pierde."*this" es el que "o" tuvo."o" queda en el estado en que lo dejaría Erase()."*this" es "o" entonces su valor no cambia.En general, después de esta operación casi nunca ocurre que (*this == o)
*this Definición en la línea 302 del archivo Matrix_Map.h.
|
inline |
Intercambia los valores de "*this" y "o".
"*this" en lugar de una referencia, como ocurre con Matrix_Map::Child(), a veces swap() no tiene el resultado esperado por el programador.Por ejemplo, si se invoca T.Child(i). swap( T.Child(j) ) el resultado no es intercambiar los hijos, sino más bien intercambiar los valores de los sub-árboles temporales T.Child(i) y T.Child(j). La forma correcta de intercambiar hijos es usar Graft().
1 )Definición en la línea 340 del archivo Matrix_Map.h.
| bool Mx::Matrix_Map< E >::equals | ( | const Matrix_Map< E > & | o | ) | const |
¿¿¿ (*this==o) ???
Definición en la línea 240 del archivo Matrix_Map.h.
|
inline |
Retorna true si "o" comparte sus valores con "*this".
Definición en la línea 72 del archivo Matrix_Map.h.
|
private |
Le suma a "*this" la matriz "O".
Definición en la línea 509 del archivo Matrix_Map.h.
|
private |
Le resta a "*this" la matriz "O".
Definición en la línea 538 del archivo Matrix_Map.h.
|
private |
Calcula la multiplicación A * B y la almacena en "*this".
"A" y "B" deben tener dimensiones compatibles A.cols() == B.rows() "A" debe ser igual a la cantidad de columnas de "B" A.cols() * B.cols() * A.cols() * A.capacity() * B.capacity() )Definición en la línea 571 del archivo Matrix_Map.h.
|
inline |
Retorna una referencia al elemento [i,j] de la matriz.
M(i,j) significa lo que en arreglos se denota con M[i][j].M(i,j) = val; // M(i,j) es un "lvalue" (modificable) Definición en la línea 463 del archivo Matrix_Map.h.
| const E & Mx::Matrix_Map< E >::operator() | ( | unsigned | i, |
| unsigned | j | ||
| ) | const |
Retorna una referencia al elemento [i,j] de la matriz ( const ).
M(i,j) significa lo que en arreglos se denota con M[i][j].val = M(i,j); // M(i,j) es un "rvalue" (const) Definición en la línea 420 del archivo Matrix_Map.h.
| void Mx::Matrix_Map< E >::reSize | ( | unsigned | m, |
| unsigned | n | ||
| ) |
Le cambia las dimensiones a la matriz.
Matrix_Map<E>::value_type(). (m > 0) && (n > 0) Definición en la línea 354 del archivo Matrix_Map.h.
|
inline |
Le ajusta las dimensiones a la matriz.
(m*n) == rows()*cols() hace lo mismo que haría reSize(m,n).Definición en la línea 401 del archivo Matrix_Map.h.
|
inline |
Define el escalar que por defecto está en todas las entradas de la Matrix_Map.
same != getDefault() la matriz queda vacía.Definición en la línea 192 del archivo Matrix_Map.h.
|
inline |
Valor almacenado en la mayor parte de la Matrix_Map.
Definición en la línea 93 del archivo Matrix_Map.h.
| void Mx::Matrix_Map< E >::reserve | ( | size_type | _Count | ) |
Ajusta la matriz para que pueda almacenar n valores diferentes a getDefault().
|
inline |
Le cambia el tamaño máximo posible a la matriz.
getDefault().size() < newsize. Definición en la línea 490 del archivo Matrix_Map.h.
| void Mx::Matrix_Map< E >::clear | ( | ) |
Deja el valor de *this en el valor en que lo inicializa el constructor de vector.
Definición en la línea 410 del archivo Matrix_Map.h.
|
friend |
Datos de prueba para la clase.
Definición en la línea 100 del archivo Matrix_Map.h.
|
friend |
¿¿¿ (p == q) ???
Definición en la línea 67 del archivo Matrix_Map.h.
|
friend |
¿¿¿ (p != q) ???
Definición en la línea 69 del archivo Matrix_Map.h.
|
friend |
Retorna A+B.
Definición en la línea 78 del archivo Matrix_Map.h.
|
friend |
Retorna A-B.
Definición en la línea 80 del archivo Matrix_Map.h.
|
friend |
Retorna A*B.
Definición en la línea 82 del archivo Matrix_Map.h.
Verifica la invariante de la clase.
- El campo \c m_same indica cuál es el valor que se repite más en toda la matriz. - Usualmente \c m_same es el neutro aditivo \c value_type(). - No existe un constructor explícito para darle a \c m_same su valor inicial, que es siempre inicializado en \c value_type(). Para cambiarlo es necesario invocar el método \c setgetDefault(). - El vector \c m_dicc contiene las listas de valores almacenados en la matriz. Cualquiera de estas listas puede estar vacía; aún todas pueden ser listas vacías. - La cantidad de columnas de la matriz es el valor fijo es \c m_cols. - El largo de las listas de valores cambia cuando se hace referencia a un valor M(i,j) mediante la versión que no es \c const del \c operator()(i,j). O sea, que es ese método el encargado de agregar valores en \c m_dicc, pues el operador homónimo \c const operator()(i,j) nunca agrega nada y, como es \c const, en general retorna una referencia constante a \c m_same. - Es posible que la matriz tenga dimensiones nulas, lo que implica que el vector \c m_dicc está vacío. - No hace falta alacenar la cantidad de valores de la matriz porque se siempre es \c m_VL.size(). el valor \c 0 (cero) al campo \c m_capacity. \par <em>Rep</em> Modelo de la clase
- http://www.di-mare.com/adolfo/binder/c03.htm#k1-Rep \remark Libera al programador de implementar el método \c Ok() - http://www.di-mare.com/adolfo/binder/c04.htm#sc11
(m_cols == 0) <==> (m_dicc.empty())check_ok( M.m_same )check_ok( M(i,j) ) Definición en la línea 164 del archivo Matrix_Map.h.
|
private |
Vector que contiene los valores de la matiz.
Definición en la línea 108 del archivo Matrix_Map.h.
|
private |
Cantidad de filas de la matriz.
Definición en la línea 109 del archivo Matrix_Map.h.
|
private |
Cantidad de columnas de la matriz.
Definición en la línea 110 del archivo Matrix_Map.h.
|
private |
Valor almacenado en la mayor parte de la Matrix_Map.
Definición en la línea 111 del archivo Matrix_Map.h.
1.8.5