⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tmatrix.cpp

📁 矩阵模板类
💻 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 + -