C++写矩阵乘法函数

/*
用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;
}

全部评论
可以使用Eigen库
2
送花
回复
分享
发布于 2023-09-23 00:15 黑龙江
快速幂呢?
点赞
送花
回复
分享
发布于 2023-10-09 15:37 北京
蔚来
校招火热招聘中
官网直投

相关推荐

点赞 评论 收藏
转发
5 38 评论
分享
牛客网
牛客企业服务