|
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(). - No existe un constructor explícito para darle a
m_same su valor inicial, que es siempre inicializado en value_type(). 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. |