任意俩个矩阵相乘c++
时间: 2025-03-05 21:46:26 浏览: 57
### C++ 中使用 `vector` 实现矩阵相乘
在 C++ 中,可以通过标准库中的 `std::vector` 来表示矩阵,并按照矩阵乘法的定义实现两个矩阵之间的相乘操作。具体来说,可以使用嵌套的 `std::vector<int>` 或者其他适当的数据类型来存储矩阵的行和列。
下面是完整的代码示例:
```cpp
#include <iostream>
#include <vector>
using namespace std;
// 定义函数用于执行矩阵相乘
vector<vector<int>> matrixMultiply(const vector<vector<int>>& A, const vector<vector<int>>& B) {
int n = A.size(); // 获取A的行数
int m = A[0].size(); // 获取A的列数/B的行数
int p = B[0].size(); // 获取B的列数
// 初始化结果矩阵C(n×p),初始值全部设为0
vector<vector<int>> C(n, vector<int>(p, 0));
// 执行矩阵相乘运算
for (int i = 0; i < n; ++i) { // 遍历矩阵A的每一行
for (int j = 0; j < p; ++j) { // 遍历矩阵B的每一列
for (int k = 0; k < m; ++k) { // 对应位置元素相乘累加到结果矩阵相应位置上
C[i][j] += A[i][k] * B[k][j];
}
}
}
return C;
}
void printMatrix(const vector<vector<int>>& M) {
for (const auto& row : M) {
for (int val : row) {
cout << val << ' ';
}
cout << '\n';
}
}
int main() {
// 示例数据初始化
vector<vector<int>> mat1 = {{2, 0}, {1, 3}};
vector<vector<int>> mat2 = {{2, 1, 4}, {0, 2, 5}};
// 调用函数计算两者的乘积
vector<vector<int>> result = matrixMultiply(mat1, mat2);
// 输出最终的结果矩阵
printMatrix(result);
}
```
上述程序展示了如何创建一个名为 `matrixMultiply` 的函数来进行两个给定大小兼容的矩阵间的相乘操作[^1]。此方法适用于任何规模合理的整型数值矩阵;对于浮点数或其他复杂类型的矩阵,则需调整相应的模板参数或变量声明部分。
#### 关于矩阵尺寸的要求
需要注意的是,在实际应用中,只有当第一个矩阵的列数等于第二个矩阵的行数时,这两个矩阵才能被合法地相乘。如果尝试对不符合条件的一对矩阵做乘法将会导致逻辑错误或者运行期异常。
阅读全文
相关推荐

















