加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

C++里完成矩阵类的建立

(2006-09-03 13:39:14)
分类: 技术文章
  暑假在学校无聊,就学了一些C++的东西.在学到C++用类来封装数据的时候,突然想到如果把我们常用的矩阵做成一个类,在类里实现一些矩阵运算的功能,岂不是很好?于是写了下面这些代码:
 
//~CMatrix.h
//programming by lei,2006.7.20
//*******
class CMatrix
{
public:
 CMatrix(int,int);         //构造函数
 bool initialize(int,int);  //矩阵初始化
 bool create();             //由用户输入矩阵各元素
 void output();             //输出矩阵各元素
 CMatrix operator +(CMatrix &M2);  //重载矩阵加运算
 CMatrix operator -(CMatrix &M2);  //重载矩阵减运算
 CMatrix operator *(int &m);       //重载矩阵与常数乘法运算
    CMatrix operator *(CMatrix &M2); //重载矩阵与矩阵乘法运算
private:
 int m_row;       //矩阵行数
 int m_col;       //矩阵列数
 double *m_pData;  //使用指针指向矩阵各元素
};
//构造函数
CMatrix::CMatrix(int r,int c)
{
  initialize(r,c); 
}
//矩阵初始化函数
bool CMatrix::initialize(int r,int c)
{
   m_row=r;
   m_col=c;
   m_pData=new double[r*c];
   for(int i=0;i<m_row*m_col;i++)
   {
      m_pData[i]=0;
   }
   return true;
}
//输入矩阵数据元素,创建新矩阵
bool CMatrix::create()
{
  m_pData=new double[m_row*m_col];
  for(int i=0;i<m_row*m_col;i++)
  {
     cin>>m_pData[i];
  }
 return true;
}
//矩阵输出函数
void CMatrix::output()
{
   int j=0;
   for(int i=0;i<m_row*m_col;i++)
   {
      cout<<m_pData[i]<<" ";
   j++;
   if(j==m_col) {j=0;cout<<"\n";}
   }
}
//重载矩阵相加运算
CMatrix CMatrix::operator +(CMatrix &M2)
 
   CMatrix M=*this;
   for(int i=0;i<m_row*m_col;i++)
     M.m_pData[i]=m_pData[i]+M2.m_pData[i];
   return M;
}
//重载矩阵相减运算
CMatrix CMatrix::operator -(CMatrix &M2)
 
   CMatrix M=*this;
   for(int i=0;i<m_row*m_col;i++)
     M.m_pData[i]=m_pData[i]-M2.m_pData[i];
   return M;
}
//重载矩阵与常数相乘运算
CMatrix CMatrix::operator *(int &m)
{
   CMatrix M=*this;
   for(int i=0;i<m_row*m_col;i++)
     M.m_pData[i]=m_pData[i]*m;
   return M;
}
//重载矩阵与矩阵乘法运算
CMatrix CMatrix::operator *(CMatrix &M2)
{
   CMatrix M=*this;
   int j=0;
   for(int i=0;i<m_row*m_col;i++)
   {
      M.m_pData[i]=m_pData[i]*M2.m_pData[i+j*m_col];
      j++;
   if(j==M2.m_row) j=0;
   }
   return M2;
}
//**************
当然,我们还可以在此基础上再添加其他矩阵运算成员函数,以完善CMatrix类.
新建一个source文件,将CMatrix.h包含进去,即可使用矩阵类.
 
 
 
 

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有