#ifndef LOWERTRIANGULARMATRIX_H
#define LOWERTRIANGULARMATRIX_H
#include "matrixIndexOutOfBounds.h"
#include "illegalParameterValue.h"
template<class T>
class lowerTriangularMatrix
{
public:
lowerTriangularMatrix(int theN = 10);
~lowerTriangularMatrix() {delete [] element;}
T get(int, int) const;
void set(int, int, const T&);
private:
int n; // 矩阵维数
T *element; // 数组 elelment
};
template<typename T>
void lowerTriangularMatrix<T>::set(int i, int j, const T& newValue)
{// 给(i, j)元素赋新值
// 检验 i 和 j 的值是否合法
if (i < 1 || j < 1 || i > n || j > n)
throw matrixIndexOutOfBounds();
// (i, j) 在下三角,当且仅当 i >= j
if (i >= j)
element[i * (i - 1) / 2 + j - 1] = newValue;
else
if (newValue != 0)
throw illegalParameterValue("elements not lower triangle must be zero");
}
#endif // !LOWERTRIANGULARMATRIX_H
数据结构 7-12 lowerTriangularMatrix<T>::set
最新推荐文章于 2024-06-14 11:15:55 发布