请求解答C++的问题,关于矩阵

这是一个c++的关于矩阵转置与乘法的问题,怎么将这个问题的类给全部安排好?

img

#include <iostream>
#include <vector>

using namespace std;

class Matrix {
public:
    Matrix(int m, int n) : m_(m), n_(n), data_(m * n) {}

    int m() const { return m_; }
    int n() const { return n_; }

    double& operator()(int i, int j) { return data_[i * n_ + j]; }

    Matrix operator*(const Matrix& other) const {
        if (n_ != other.m_) throw "Invalid matrix size!";

        Matrix result(m_, other.n_);

        for (int i = 0; i < m_; ++i) {
            for (int j = 0; j < other.n_; ++j) {
                double sum = 0;
                for (int k = 0; k < n_; ++k) {
                    sum += (*this)(i, k) * other(k, j);
                }
                result(i, j) = sum;
            }
        }

        return result;
    }

    Matrix transpose() const {
        Matrix result(n_, m_);

        for (int i = 0; i < m_; ++i) {
            for (int j = 0; j < n_; ++j) {
                result(j, i) = (*this)(i, j);
            }
        }

        return result;
    }

private:
    int m_, n_;
    vector<double> data_;
};

int main() {
    Matrix A(2, 3);
    A(0, 0) = 2; A(0, 1) = 3; A(0, 2) = 4;
    A(1, 0) = 5; A(1, 1) = 6; A(1, 2) = 7;

    Matrix B(3, 2);
    B(0, 0) = 1; B(0, 1) = 2;
    B(1, 0) = 3; B(1, 1) = 4;
    B(2, 0) = 5; B(2, 1) = 6;

    Matrix C = A * B;
    Matrix D = C.transpose();

    cout << "A = " << endl;
    for (int i = 0; i < A.m(); ++i) {
        for (int j = 0; j < A.n(); ++j) {
            cout << A(i, j) << " ";
        }
        cout << endl;
    }

    cout << "B = " << endl;
    for (int i = 0; i < B.m(); ++i) {
        for (int j = 0; j < B.n(); ++j) {
            cout << B(i, j) << " ";
        }
        cout << endl;
    }

    cout << "C = A * B = " << endl;
    for (int i = 0; i < C.m(); ++i) {
        for (int j = 0; j < C.n(); ++j) {
            cout << C(i, j) << " ";
        }
        cout << endl;
    }

    cout << "D = C^T = " << endl;
    for (int i = 0; i < D.m(); ++i) {
        for (int j = 0; j < D.n(); ++j) {
            cout << D(i, j) << " ";
        }
        cout << endl;
    }

    return 0;
}


不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^