/***********************************************/
矩阵类模板:
template<typename T>
struct Matrix
{
typedef T Value_type;
T* data_; int M_; int N_;
Matrix(int row, int col, T const& v = T()) //构造函数;
: M_(row), N_(col)
{
data_ = (T*)malloc(row*col*sizeof(T));
std::uninitialized_fill(data_, data_ + row*col, v);
}
~Matrix() //析构函数;
{
::free(data_);
}
T& at(int i, int j)
{
return data_[i*N_ + j]; //返回对第i+1行j列元素的引用;
}
T* operator[](int i) //返回第i行首址;
{
return data_ + i*N_;
}
};
/*************************************************/
/*************************************************/
对称矩阵类模板:
template<typename T>
struct Symatrix {
typedef T Value_type; //T类型别名;
T* data_; int N_;
Symatrix(int n, T const& v = T()) : N_(n) //构造函数;
{
n = (n*n + n)/2;
data_ = (T*)malloc(sizeof(T)*n);
std::uninitialized_fill(data_, data_ + n, v);
}
~Symatrix(void){ ::free(data_); } //析构函数;
T& at(int i, int j) //返回对一个元素的引用;
{
if(i < j) std::swap(i, j);
return data_[(i*i+i)/2 + j];
}
};
/******************************************************/
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报。