Página principal | Lista de namespace | Lista de componentes | Lista de archivos | Miembros del Namespace  | Miembros de las clases | Archivos de los miembros

Referencia del Archivo Sparse_Matrix.h

Declaraciones y definiciones para la clase Sparse_Matrix. Más...

#include <cassert>
#include "Matrix_Lib.h"

Ir al código fuente de este archivo.

Namespaces

namespace  std
namespace  Mx

Clases

class  Mx::Sparse_Matrix< E >
 Esta es una clase matriz muy chirrisquitica almacenada como una matriz rala. Más...

Funciones

template<class T>
bool check_ok (const Sparse_Matrix< T > &M)
 Verifica la invariante de la clase.
template<class E>
std::ostream & operator<< (std::ostream &COUT, const Sparse_Matrix< E > &M)
 Graba en el flujo COUT el valor de M[][].
template<class E>
std::istream & operator>> (std::istream &CIN, Sparse_Matrix< E > &M)
 Obtiene del flujo CIN el valor para M[][].


Descripción detallada

Declaraciones y definiciones para la clase Sparse_Matrix.

Autor:
Adolfo Di Mare <adolfo@di-mare.com>
Fecha:
2004

Definición en el archivo Sparse_Matrix.h.


Documentación de las funciones

template<class T>
bool check_ok const Sparse_Matrix< T > &  M  ) 
 

Verifica la invariante de la clase.

  • El campo m_same indica cuál es el valor que se repite más en toda la matriz.
  • Usualmente same es el neutro aditivo value_type(0).
  • No existe un constructor explícito para darle a m_same su valor inicial, que es siempre inicializado en value_type(0). Para cambiarlo es necesario invocar el método setgetDefault().
  • Los vectores m_I[], m_J[] y m_val[] son vectores paralelos, todos de longitud Sparse_Matrix::m_capacity.
  • La cantidad máxima de valores diferente que pueden ser almacenados en la matriz es Sparse_Matrix::m_capacity.
  • El largo de estos vectores aumenta cuando se hace referencia a un valor M(i,j) mediante la versión que no es const del operator()(i,j). O sea, que es ese método el encargado de agregar valores en m_val[], pues el operador homónimo const operator()(i,j) nunca agrega nada y, como es const, en general retorna una referencia constante a m_same.
  • Es posible que la matriz tenga dimensiones nulas, lo que implica que todos los punteros a los vectors paralelos deben ser nulos. Este hecho se marca dándolo el valor 0 (cero) al campo m_capacity.
  • En todos los algoritmos, "m" o "m_rows" es la cantidad de filas == rows()
  • En todos los algoritmos, "n" o "m_cols" es la cantidad de columnas == cols()

Rep Modelo de la clase
         ____________________________________
        /          m_capacity                \
        +---+---+---+---+---+---+-..-+---+---+       0 1 2 3 4 5 6
 m_I--->| 1 | 3 | 3 |'-'| ...       ...  |'-'|   0 / - - - - - - - \
        +---+---+---+---+ ...       ...  +---+   1 | - a - - - - - |
 m_J--->| 1 | 2 | 1 |'-'| ...       ...  |'-'|   2 | - - - - - - - |
        +---+---+---+---+ ...       ...  +---+   3 | - c b - - - - |
m_val-->|'a'|'b'|'c'|'-'| ...       ...  |'-'|   4 \ - - - - - - - /
        +---+---+---+---+---+---+-..-+---+---+
          0   1   2   |
        m_size--------+ == 3    m_same == '-'   m_rows == 5  m_cols == 7
Comentarios:
Libera al programador de implementar el método Ok()

- Invariante: (m_capacity == 0) <==> (m_I == 0)

- Invariante: (m_capacity == 0) <==> (m_J == 0)

- Invariante: (m_capacity == 0) <==> (m_val == 0)

- Invariante: (m_rows == 0) ==> (m_capacity == 0)

- Invariante: (m_cols == 0) ==> (m_capacity == 0)

- Invariante: (m_capacity != 0) <==> (m_I != 0)

- Invariante: (m_capacity != 0) <==> (m_J != 0)

- Invariante: (m_capacity != 0) <==> (m_val != 0)

- Invariante: (m_rows == 0) <==> (m_cols == 0)

- Invariante: ( m_size <= m_capacity )

- Invariante: check_ok (m_same)

- Invariante: ( (0<=m_I[k]) && (m_I[k] < m_rows) ) k = [0..m_size-1]

- Invariante: ( (0<=m_J[k]) && (m_J[k] < m_cols) ) k = [0..m_size-1]

- Invariante: check_ok( m_val[k] )

Definición en la línea 149 del archivo Sparse_Matrix.h.

template<class E>
std::ostream& operator<< std::ostream &  COUT,
const Sparse_Matrix< E > &  M
 

Graba en el flujo COUT el valor de M[][].

Definición en la línea 797 del archivo Sparse_Matrix.h.

template<class E>
std::istream& operator>> std::istream &  CIN,
Sparse_Matrix< E > &  M
 

Obtiene del flujo CIN el valor para M[][].

Definición en la línea 810 del archivo Sparse_Matrix.h.


Generado el Wed Nov 14 13:47:09 2007 para Uso de Mx::Matrix: por  doxygen 1.3.9.1