54 lines
No EOL
1.1 KiB
C++
54 lines
No EOL
1.1 KiB
C++
#ifndef _MATRIX_HPP_
|
|
#define _MATRIX_HPP_
|
|
|
|
#include "../inc/vector.hpp"
|
|
|
|
template <class T>
|
|
class Matrix
|
|
{
|
|
private:
|
|
int _height;
|
|
int _width;
|
|
Vector<T> *_mat;
|
|
|
|
protected:
|
|
|
|
public:
|
|
|
|
// 确定矩阵元素大小,不初始化
|
|
Matrix(int w, int h);
|
|
// 以相同值初始化矩阵元素
|
|
Matrix(int w, int h, T init_value);
|
|
// 以顺序访问数组的值初始化矩阵元素
|
|
Matrix(int w, int h, const double *elements);
|
|
// 以另一个矩阵初始化当前矩阵的元素,实际是元素拷贝
|
|
Matrix(const Matrix &another);
|
|
//只读访问内容
|
|
const T get(int w, int h) const;
|
|
//运算符重载
|
|
T &operator[](int i) { return _mat[i]; }
|
|
};
|
|
|
|
template <class T>
|
|
Matrix<T>::Matrix(int w, int h)
|
|
{
|
|
_width = w;
|
|
_height = h;
|
|
_mat = new Vector<T>(w * h);
|
|
}
|
|
|
|
template <class T>
|
|
Matrix<T>::Matrix(int w, int h, T init_value)
|
|
{
|
|
_width = w;
|
|
_height = h;
|
|
_mat = new Vector<T>(w * h, init_value);
|
|
}
|
|
|
|
template <class T>
|
|
const T Matrix<T>::get(int w, int h) const
|
|
{
|
|
return _mat[w * _width + h];
|
|
}
|
|
|
|
#endif |