MnZn 求助重载运算符
  • 板块学术版
  • 楼主yanyan2
  • 当前回复5
  • 已保存回复5
  • 发布时间2024/4/13 12:38
  • 上次更新2024/4/13 14:39:35
查看原帖
MnZn 求助重载运算符
1087963
yanyan2楼主2024/4/13 12:38

rt,想重载一下矩阵的 [],然后疯狂报错,为什么?

struct Matrix
{
	mint M[3][3];
	Matrix(){memset(M,0,sizeof(M));}
	void reset(){memset(M,0,sizeof(M));for(int i=1;i<=L;i++)M[i][i]=1;}
	mint *operator [](int x){return M[x];}
	Matrix friend operator +(const Matrix A,const Matrix B)
	{
		Matrix res;
		for(int i=1;i<=L;i++)
			for(int j=1;j<=L;j++)
				res[i][j]=A[i][j]+B[i][j];
		return res;
	}
	Matrix friend operator *(const Matrix A,const Matrix B)
	{
		Matrix res;
		for(int i=1;i<=L;i++)
			for(int j=1;j<=L;j++)
				for(int k=1;k<=L;k++)
					res.M[i][j]=A.M[i][k]*B.M[k][j];
		return res;
	}
	Matrix friend operator ^(Matrix a,int b)
	{
		Matrix res;res.reset();
		for(;b;b>>=1){if(b&1)res=a*res;a=a*a;}
		return res;
	}
}t[N<<2],fib;
2024/4/13 12:38
加载中...