C++操作符重载
来源:互联网 发布:java编译成class工具 编辑:程序博客网 时间:2024/05/16 01:01
C++操作符重载
/*Name: 矩阵类
Copyright: Nit-Acm Team
Author: Shelling
Date: 30-05-07 20:42
Description: 矩阵基本运算与功能实现
*/
#include <cstdio>
#include <vector>
#include <iostream>
using namespace std ;
int m ;
struct Matrix
{
int row,col ;
vector<vector<int> >Container ;
vector<int>& operator [] (int T) //重载方括号运算符
{
return Container[T] ;
}
vector<int> operator [] (int T) const
{
return Container[T] ;
}
Matrix(){}//构造器
Matrix(int n):row(n),col(n),Container(vector<vector<int> >(n,vector<int>(n)) ){} //对称矩阵
Matrix(int row,int col):row(row),col(col),Container(vector<vector<int> >(row,vector<int>(col)) ){}
friend inline istream & operator >> (istream & is,Matrix & M) //输入流重载
{
for(int r = 0 ; r < M.row ; r++)
for(int c = 0 ; c < M.col ; c++)
is >> M.Container[r][c] ;
return is ;
}
friend inline ostream & operator << (ostream & os,const Matrix & M)
{
for(int r = 0 ; r < M.row ; r++)
{
cout << M[r][0] ;
for(int c = 1 ; c < M.col ; c++)
cout << ' ' << M[r][c] ;
cout << endl ;
}
return os;
}
Matrix operator * (const Matrix & M) //矩阵乘法
{
Matrix Res(row,M.col);
for(int i = 0 ; i < row ; i++)
for(int j = 0 ; j < M.col ; j++)
for(int k = 0 ; k < col ; k++)
Res[j] += Container[k] * M[k][j];
return Res ;
}
Matrix operator + (const Matrix & M) //矩阵加法
{
Matrix Res(row,col);
for(int i = 0 ; i < row ; i++)
for(int j = 0 ; j < col ; j++)
Res[j] = Container[j] + M[j];
return Res ;
}
Matrix operator + (const int t) //矩阵加法
{
Matrix Res(row,col);
for(int i = 0 ; i < row ; i++)
for(int j = 0 ; j < col ; j++)
Res[j] = Container[j] + t;
return Res ;
}
Matrix & operator *= (Matrix M) //自乘
{
Matrix Res(row,M.col);
for(int i = 0 ; i < row ; i++)
for(int j = 0 ; j < M.col ; j++)
for(int k = 0 ; k < col ; k++)
Res[j] += (Container[k] * M[k][j]);
return *this = Res ;
}
static Matrix E(const int & n) //单位矩阵
{
Matrix e(n) ;
for(int i = 0 ; i < n ; i++)
e = 1 ;
return e ;
}
};
int main()
{
Matrix A(2,3),B(3,3) ;
while(cin >> A >> B)
cout << A * B
}
- C++【操作符重载】
- c++::操作符重载
- C++:操作符重载
- 操作符重载(C++)
- C++-重载操作符<< >> = + - * /
- c++_操作符重载
- C/C++: 操作符重载案例
- C++操作符重载专题(C++)
- 类型转换和操作符重载 (c#)
- C++——操作符重载
- 重载操作符 (c++primer 4e)
- 【C++】 重载操作符类编程
- 自定义数据类型,操作符重载实例[C#]
- C++primer读书笔记8-重载操作符
- C/C++ 之 操作符重载
- [c++]实例-类array,重载操作符
- C++,重载输出操作符<<, cout.operator()
- c++string类的操作符重载
- 假招聘内幕:我们根本不需要很多人
- Harmonious layouts for n queens in a n*n chessboard
- 10大最佳古怪网站
- 一款餐饮软件的破解
- 跨平台编译含中文源码方法(MSVC和GCC)
- C++操作符重载
- Apache服务器中限制针对某一目录的CGI解析
- 如何取id号?
- 一道趣味算术题
- 让UI开发轻松而快乐,用SonicUI引擎实现常见UI效果
- 软件开发的目的
- SessionFactory.getCurrentSession与openSession的区别
- Symbian文档类读写文件和读写Ini文件
- three days backup