Skip to content

矩阵乘法模板类 ​

cpp
template<int X,int Y>
struct Matrix{
    LL a[X][Y];
    Matrix(){
        memset(a,0,sizeof a);  
    }
    void set(const vector<vector<int>> &v){
        for(int i=0;i<X;i++){
            for(int j=0;j<Y;j++)a[i][j]=v[i][j];
        }
    }
    template<int _X,int _Y>
    Matrix<X,_Y> operator*(const Matrix<_X,_Y> &t){
        Matrix<X,_Y> res;
        for(int k=0;k<Y;k++){
            for(int i=0;i<X;i++){
                for(int j=0;j<_Y;j++)res.a[i][j]+=a[i][k]*t.a[k][j];
            }
        }
        return res;
    }
    Matrix<X,Y> operator+(const Matrix<X,Y> &t){
        Matrix<X,Y> res;
        for(int i=0;i<X;i++){
            for(int j=0;j<Y;j++)res.a[i][j]=a[i][j]+t.a[i][j];
        }
        return res;
    }
};