如何用C++表示矩阵相乘
时间: 2024-10-17 20:13:22 浏览: 23
稀疏矩阵的转置和相乘实现
5星 · 资源好评率100%
在C++中,可以使用二维数组或者动态内存分配的vector来表示矩阵。矩阵相乘通常涉及到两个矩阵的操作,其中一个矩阵(通常是左矩阵)的列数等于另一个矩阵(右矩阵)的行数,才能完成相乘。下面是一个简单的示例,展示如何使用嵌套循环计算两个矩阵的乘积:
```cpp
#include <iostream>
using namespace std;
// 定义矩阵类 Matrix,包含数据成员和构造函数
class Matrix {
private:
int rows;
int cols;
double** data; // 二维动态数组
public:
Matrix(int r, int c) : rows(r), cols(c) {
data = new double*[rows];
for (int i = 0; i < rows; ++i)
data[i] = new double[cols];
}
~Matrix() {
for (int i = 0; i < rows; ++i)
delete[] data[i];
delete[] data;
}
// 矩阵乘法函数,假设A * B 的结果存储在本矩阵中
void multiply(const Matrix& B) {
if (cols != B.rows) {
throw "Invalid dimensions for multiplication";
}
for (int i = 0; i < rows; ++i) {
for (int j = 0; j < B.cols; ++j) {
data[i][j] = 0.0;
for (int k = 0; k < cols; ++k) { // 使用三重循环
data[i][j] += data[i][k] * B.data[k][j];
}
}
}
}
// 打印矩阵
void print() {
for (int i = 0; i < rows; ++i) {
for (int j = 0; j < cols; ++j)
cout << data[i][j] << " ";
cout << endl;
}
}
};
int main() {
Matrix A(2, 3);
Matrix B(3, 4); // A是2x3,B是3x4,能相乘
// 初始化并打印A和B
A.print();
B.print();
// 矩阵相乘
A.multiply(B);
// 输出结果矩阵A
cout << "Result of matrix multiplication:\n";
A.print();
return 0;
}
```
阅读全文