📄 tmatrix.cpp
字号:
#include "StdAfx.h"
#include ".\tmatrix.h"
template<class T>
TMatrix<T>::TMatrix(int mm,int nn)
{
if(mm<0||nn<0)
exit(0);
int i,j;
m=mm;//对行属性赋值
n=nn;//对列属性赋值
a=new T*[m];//申请m个行指针
for(i=0;i<m;i++)
a[i]=new T[n];//为每个行指针申请n个元素的空间
}
//拷贝构造函数
template<class T>
TMatrix<T>::TMatrix(const TMatrix<T> &b)
{
int i,j;
m=b.m;
n=b.n;
a=new T*[m];
for(i=0;i<m;i++)
a[i]=new T[n];
for(i=0;i<m;i++)
for(j=0;j<n;j++)
a[i][j]=b.a[i][j];
}
//析构函数
template<class T>
TMatrix<T>::~TMatrix(void)
{
for(int i=0; i<m; i++)
delete []a[i];//释放元素空间
delete a;
}
/*矩阵赋值,重载“=”运算符*/
template<class T>
TMatrix<T> & TMatrix<T>::operator =(const TMatrix<T> & b)
{
int i,j;
if(m!=b.m||n!=b.n)
{
cout<<"数组大小不匹配!"<<endl;
exit(0);
}
for(i=0;i<m;i++)
for(j=0;j<n;j++)
a[i][j]=b.a[i][j];
return (*this);
}
/*矩阵加法*/
template<class T>
TMatrix<T> TMatrix<T>::operator +(const TMatrix<T> &b)
{
if(m!=b.m||n!=b.n)
{
cout<<"数组大小不匹配!"<<endl;
exit(0);
}
int i,j;
TMatrix<T> c(m,n);
for(i=0;i<m;i++)
for(j=0;j<n;j++)
c.a[i][j]=a[i][j]+b.a[i][j];
return c;
}
/*矩阵乘法*/
template<class T>
TMatrix<T> TMatrix<T>::operator *(const TMatrix<T> &b)
{
if(n!=b.m)
{
cout<<"数组大小不匹配!"<<endl;
exit(0);
}
int i,j,k;
TMatrix<T> c(m,b.n);
for(i=0;i<m;i++)
for(j=0;j<b.n;j++)
{
c.a[i][j]=0;
for(k=0;k<n;k++)
c.a[i][j]+=a[i][k]*b.a[k][j];
}
return c;
}
/*用数组设置矩阵*/
template<class T>
void TMatrix<T>::Set(T aa[])
{
int i,j;
for(i=0;i<m;i++)
for(j=0;j<n;j++)
a[i][j]=aa[i*n+j];
}
/*重载输出流符*/
template<class T>
ostream & operator<<(ostream &os, TMatrix<T> &b)
{
int i,j;
for(i=0;i<b.m;i++)
{
for(j=0;j<b.n;j++)
os<<b.a[i][j]<<" ";
os<<endl;
}
os<<"---------------"<<endl;
return os;
}
/*重载输入流符*/
template<class T>
istream & operator >> (istream& in,TMatrix<T> & b)
{
cout<<"请输入数组:"<<endl;
for(int i=0;i<b.m ;i++)
for(int j=0;j<b.n ;j++)
in>>b.a[i][j] ;
return in;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -