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 北京

相关推荐

10-27 12:30
西京学院 C++
快手 基础架构开发 月薪不清楚,一年发16薪,4个月年终
点赞 评论 收藏
分享
评论
6
38
分享
牛客网
牛客企业服务