c++矩阵类实现矩阵相乘
时间: 2023-08-16 14:07:36 浏览: 112
好的,下面是一个简单的 C++ 矩阵类实现矩阵相乘的示例代码:
```c++
#include <iostream>
#include <vector>
using namespace std;
class Matrix {
private:
vector<vector<int>> data; // 存储矩阵的二维向量
int m, n; // 矩阵的行数和列数
public:
// 构造函数
Matrix(int rows, int cols) {
m = rows;
n = cols;
data.resize(m, vector<int>(n, 0)); // 初始化矩阵为全零矩阵
}
// 矩阵相乘运算符重载
Matrix operator*(const Matrix& other) {
if (n != other.m) {
cout << "矩阵维度不匹配,无法相乘" << endl;
return Matrix(0, 0);
}
Matrix result(m, other.n);
for (int i = 0; i < m; i++) {
for (int j = 0; j < other.n; j++) {
int temp = 0;
for (int k = 0; k < n; k++) {
temp += data[i][k] * other.data[k][j];
}
result.data[i][j] = temp;
}
}
return result;
}
// 矩阵赋值运算符重载
Matrix& operator=(const Matrix& other) {
if (this == &other) {
return *this;
}
m = other.m;
n = other.n;
data = other.data;
return *this;
}
// 打印矩阵
void print() {
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
cout << data[i][j] << " ";
}
cout << endl;
}
}
};
int main() {
Matrix A(2, 3);
Matrix B(3, 2);
A.print();
B.print();
A = {{1, 2, 3}, {4, 5, 6}};
B = {{7, 8}, {9, 10}, {11, 12}};
A.print();
B.print();
Matrix C = A * B;
C.print();
return 0;
}
```
这个示例代码中,我们定义了一个 `Matrix` 类来表示矩阵,并实现了矩阵相乘的运算符重载。在 `main()` 函数中,我们创建了两个矩阵 `A` 和 `B`,并将它们赋值为我们需要相乘的矩阵。然后,我们通过 `A * B` 的方式来计算它们的乘积,并将结果存储在 `C` 中。最后,我们打印了 `C` 的值,即矩阵相乘的结果。
阅读全文