/*
用C++写矩阵乘法函数
使用size函数求行数和列数,然后for循环计算
*/
#include<iostream>
using namespace std;
#include<vector>
//矩阵乘法函数
//使用vector<vector<int>>描述二维矩阵
vector<vector<int>> multiplyMatrix(
const vector<vector<int>>& matrix1, //引用-避免值复制,const-避免修改原矩阵
const vector<vector<int>>& matrix2) {
//矩阵相乘,第一个矩阵的列数等于第二个矩阵的行数
//m*n矩阵 乘 n*p矩阵 ,结果为 m*p 矩阵
int m = matrix1.size(); //第一个矩阵的行数
int n = matrix1[0].size(); //第一个矩阵的列数
int p = matrix2[0].size(); //第二个矩阵的列数
//创建一个结果矩阵,初始化全为零
vector<vector<int>> result(m, vector<int>(p, 0)); //定义m*p的矩阵,初值为零
//执行矩阵乘法
for (int i = 0; i < m; i++) { //第一个矩阵的行数
for (int j = 0; j < p; j++) { //第二个矩阵的列数
for (int k = 0; k < n; k++) { //第k个元素
result[i][j] += matrix1[i][k] * matrix2[k][j];
}
}
}
//返回结果
return result;
}
//主函数
int main() {
//示例输入矩阵
vector<vector<int>> matrix1 = { {1,2,3}, {4,5,6} };
vector<vector<int>> matrix2 = { {7,8},{9,10},{11,12} };
//调用矩阵乘法函数
vector<vector<int>> result = multiplyMatrix(matrix1, matrix2);
//打印结果矩阵
for (const auto& row : result) {
for (const auto& val : row) {
cout << "\t" << val << " ";
}
cout << endl;
}
return 0;
}