📅  最后修改于: 2023-12-03 14:49:57.954000             🧑  作者: Mango
在C++中,我们可以通过运算符重载来定义矩阵运算,使得代码更加简洁易懂。下面我们将介绍如何使用运算符重载进行矩阵运算。
首先,我们需要定义一个矩阵类。在这个类中,我们需要定义矩阵的行数、列数以及矩阵元素。代码如下:
class Matrix {
public:
int row, col;
vector<vector<int>> data;
Matrix(int row, int col) : row(row), col(col) {
data.resize(row, vector<int>(col));
}
Matrix operator+(const Matrix& A) const {
Matrix res(row, col);
for (int i = 0; i < row; i++) {
for (int j = 0; j < col; j++) {
res.data[i][j] = data[i][j] + A.data[i][j];
}
}
return res;
}
Matrix operator-(const Matrix& A) const {
Matrix res(row, col);
for (int i = 0; i < row; i++) {
for (int j = 0; j < col; j++) {
res.data[i][j] = data[i][j] - A.data[i][j];
}
}
return res;
}
Matrix operator*(const Matrix& A) const {
Matrix res(row, A.col);
for (int i = 0; i < row; i++) {
for (int j = 0; j < A.col; j++) {
for (int k = 0; k < col; k++) {
res.data[i][j] += data[i][k] * A.data[k][j];
}
}
}
return res;
}
};
在这个类中,我们重载了三个运算符:加号、减号和乘号。加号和减号的运算比较简单,直接对对应位置的矩阵元素进行加减。乘号的运算需要按矩阵乘法的规则进行计算。
有了这个矩阵类之后,我们就可以很方便地进行矩阵运算了。下面是一个示例代码:
Matrix A(2, 3);
A.data = {{1, 2, 3}, {4, 5, 6}};
Matrix B(3, 2);
B.data = {{7, 8}, {9, 10}, {11, 12}};
Matrix C = A * B;
上面这段代码定义了两个矩阵A和B,然后对它们进行乘法运算,结果存到了矩阵C中。
通过定义矩阵类并使用运算符重载,我们可以很方便地进行矩阵运算。这大大简化了代码的书写,使得代码更加易懂。