【C++】使用std::vector()函数实现矩阵的加、减、点乘、点除等运算

本文通过vector()函数表示矩阵的形式,对 加、减、点乘、点除等运算进行编码和运行,相应结果如下文所述。

#include <iostream>
#include <vector>using namespace std;// 矩阵加法
vector<vector<int>> add(vector<vector<int>>& A, vector<vector<int>>& B) {vector<vector<int>> result(A.size(), vector<int>(B[0].size()));for (int i = 0; i < A.size(); i++) {for (int j = 0; j < B[0].size(); j++) {result[i][j] = A[i][j] + B[i][j];}}return result;
}// 矩阵减法
vector<vector<int>> subtract(vector<vector<int>>& A, vector<vector<int>>& B) {vector<vector<int>> result(A.size(), vector<int>(B[0].size()));for (int i = 0; i < A.size(); i++) {for (int j = 0; j < B[0].size(); j++) {result[i][j] = A[i][j] - B[i][j];}}return result;
}// 矩阵点乘
vector<vector<int>> dot_product(vector<vector<int>>& A, vector<vector<int>>& B) {vector<vector<int>> result(A.size(), vector<int>(B[0].size()));for (int i = 0; i < A.size(); i++) {for (int j = 0; j < B[0].size(); j++) {result[i][j] = 0;for (int k = 0; k < A[0].size(); k++) {result[i][j] += A[i][k] * B[k][j];}}}return result;
}本文通过vector表示矩阵的内容,进行加、减、点乘、点除四种运算示例,包含代码和运行结果,可直接运行。// 矩阵点除
vector<vector<int>> divide(vector<vector<int>>& A, vector<vector<int>>& B) {vector<vector<int>> result(A.size(), vector<int>(B[0].size()));for (int i = 0; i < A.size(); i++) {for (int j = 0; j < B[0].size(); j++) {result[i][j] = A[i][j] / B[i][j];}}return result;
}void printMatrix(const vector<vector<int>>& matrix) {for (const auto& row : matrix) {for (const auto& element : row) {cout << element << ' '; // 可以按你的需求更改分隔符,例如使用逗号或制表符等。这里使用空格作为分隔符。}cout << '\n'; // 每行结束后换行。你可以更改或删除此行,根据你的需求。}
}
int main() {// 测试矩阵加法vector<vector<int>> A = { {1, 2}, {3, 4} };vector<vector<int>> B = { {5, 6}, {7, 8} };vector<vector<int>> C = add(A, B);cout<<"加法运算:" << endl;printMatrix(C);// 测试矩阵减法cout << "减法运算:" << endl;vector<vector<int>> D = subtract(A, B);printMatrix(D);// 测试矩阵点乘cout << "点乘运算:" << endl;vector<vector<int>> E = dot_product(A, B);printMatrix(E);cout << "点除运算:" << endl;// 测试矩阵点除vector<vector<int>> F = divide(A, B);printMatrix(F);return 0;
}

上述代码主要定义了四个操作矩阵的函数:加法、减法、点乘和点除,以及一个打印矩阵的函数。

**add 函数:**这个函数实现了两个矩阵的加法操作。它首先创建一个新的矩阵,大小与输入的两个矩阵相同,然后逐个元素地加上两个输入矩阵的对应元素。
**subtract 函数:**这个函数实现了两个矩阵的减法操作。它首先创建一个新的矩阵,大小与输入的两个矩阵相同,然后逐个元素地减去两个输入矩阵的对应元素。
**dot_product 函数:**这个函数实现了两个矩阵的点乘操作。它首先创建一个新的矩阵,大小与输入的两个矩阵相同,然后逐个元素地计算两个输入矩阵的对应元素的乘积,并把乘积相加。
**divide 函数:**这个函数实现了两个矩阵的点除操作。注意,这段代码并未处理除数为0的情况。在实际应用中,你需要添加额外的处理逻辑来应对除数为0的情况。
**printMatrix 函数:**这个函数用于打印一个矩阵。它通过嵌套循环来遍历矩阵的每一个元素,并打印出来。每个元素之后都有一个空格,每行结束之后会换行。
**在 main 函数中,**这段代码用两组示例矩阵测试了上述四个函数,并使用 printMatrix 函数打印了结果。

**注意:**由于这段代码并未处理除数为0的情况,所以在实际使用 divide 函数时,需要添加额外的逻辑来处理除数为0的情况,否则可能会导致运行时错误。

输出结果如下图所示:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/152753.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【算法】最优乘车——bfs(stringsteam的实际应用,getline实际应用)

题目 H 城是一个旅游胜地&#xff0c;每年都有成千上万的人前来观光。 为方便游客&#xff0c;巴士公司在各个旅游景点及宾馆&#xff0c;饭店等地都设置了巴士站并开通了一些单程巴士线路。 每条单程巴士线路从某个巴士站出发&#xff0c;依次途经若干个巴士站&#xff0c;…

万字长文 - Python 日志记录器logging 百科全书 - 高级配置之 日志分层

万字长文 - Python 日志记录器logging 百科全书 - 高级配置之 日志分层 前言 在 Python 的logging模块中&#xff0c;它不仅提供了基础的日志功能&#xff0c;还拥有一系列高级配置选项来满足复杂应用的日志管理需求。 说到logging 模块的高级配置&#xff0c;必须提及日志分…

Linux latin1字符集转成UTF-8

latin1字符集&#xff0c;我用命令iconv转换后依旧乱码&#xff0c;但是本地用Notepad转成utf-8再入库数据&#xff0c;却是正常的 查看文件编码 vi WeakcoverReason_20231120.csv:set fileencoding使用编码转换命令&#xff0c;将latin1改成UTF-8 iconv -f latin1 -t UTF-8 W…

初始环境配置

目录 一、JDK1、简介2、配置步骤 二、Redis1、简介2、配置步骤 三、MySQL1、简介2、配置步骤 四、Git1、简介2、配置步骤 五、NodeJS1、简介2、配置步骤 六、Maven1、简介2、配置步骤 七、Tomcat1、简介2、配置步骤 一、JDK 1、简介 JDK 是 Oracle 提供的 Java 开发工具包&…

centos7安装WordPress

安装Apache sudo yum install httpd sudo systemctl start httpd sudo systemctl enable httpd 安装PHP sudo yum install epel-release sudo yum -y install https://rpms.remirepo.net/enterprise/remi-release-7.rpm sudo yum-config-manager --enable remi-php74 sud…

Python顺序结构程序设计

第1关&#xff1a;货币转换 #货币换算程序 hl input("请输入汇率") hb input("请输入带有符号$的货币") #####代码开始#####hl float(hl) hb1 float(hb[1:])rmb hb1 * hl # 输出人民币值 print("人民币&#xffe5;{:.2f}".format(rmb)) ##…

Java实现拼图小游戏

1、了解拼图游戏基本功能&#xff1a; 拼图游戏内容由若干小图像块组成的&#xff0c;通过鼠标点击图像块上下左右移动&#xff0c;完成图像的拼凑。 2、拼图游戏交互界面设计与开发&#xff1a; 通过创建窗体类、菜单、中间面板和左右面板完成设计拼图的交互界面 &#xff…

用java编写图书管理系统

一个简单的图书管理系统通常包含图书的增加、删除、查询和显示等基本功能。 以下是一个用 Java 编写的简单图书管理系统的示例代码。 import java.util.ArrayList; import java.util.Scanner;class Book {private String title;private String author;public Book(String tit…

2311rust,到54版本更新

1.50.0稳定版 常量泛型数组索引 继续向稳定的常量泛型迈进,此版本为[T;N]数组,添加了ops::Index和IndexMut的实现. fn second<C>(container: &C) -> &C::Output whereC: std::ops::Index<usize> ?Sized, {&container[1] } fn main() {let arra…

leetcode做题笔记242. 有效的字母异位词

给定两个字符串 s 和 t &#xff0c;编写一个函数来判断 t 是否是 s 的字母异位词。 注意&#xff1a;若 s 和 t 中每个字符出现的次数都相同&#xff0c;则称 s 和 t 互为字母异位词。 示例 1: 输入: s "anagram", t "nagaram" 输出: true示例 2: 输…

linux rsyslog综合实战1

本次我们通过rsyslog服务将A节点服务器上的单个日志(Path:/var/log/245-1.log)实时同步到B节点服务器目录下(Path:/opt/rsyslog/245) 1.rsyslog架构 2.环境信息 环境信息 HostnameIpAddressOS versionModuleNotersyslog1192.168.10.245CentOS Linux release 7.9.2009 (Core)rs…

类与对象(上篇)

前言 在之前我们学的C入门主要是为现在学习类与对象打基础&#xff0c;今天我们才算真正开始学习C了。因为类与对象的知识点比较多&#xff0c;所以我们将它分为三部分讲解&#xff0c;今天我们学习类与对象的上篇。 一、面向过程和面向对象的初步认识 1、面向过程 面向过程顾…

Android 电量优化概览

目录 一、三大耗电模块 二、显示 2.1 Overdraw简介 2.2 Overdraw检测 2.3 UI优化优化 三、网络 3.1 移动网络 3.2 Wi-Fi 3.3 网络优化 四、CPU 4.1 变频 4.2 CPU优化 4.2.1 计算优化 4.2.2 避免WakeLock使用不当 4.2.3 避免Alarm Manager使用不当 4.2.4 使用Jo…

[github初学者教程] 分支管理-以及问题解决

作者&#xff1a;20岁爱吃必胜客&#xff08;坤制作人&#xff09;&#xff0c;近十年开发经验, 跨域学习者&#xff0c;目前于新西兰奥克兰大学攻读IT硕士学位。荣誉&#xff1a;阿里云博客专家认证、腾讯开发者社区优质创作者&#xff0c;在CTF省赛校赛多次取得好成绩。跨领域…

QT中使用unity

qt把unity发入widget中 头文件showunitywindowsinqt #ifndef SHOWUNITYWINDOWSINQT_H #define SHOWUNITYWINDOWSINQT_H #include <QObject> #include <QProcess> #include <windows.h> #include <winuser.h> #include <QDebug> class ShowUnity…

工作记录---为什么双11当天不能申请退款?(有趣~)

为什么&#xff1f; 服务降级了 服务降级&#xff1a; 当服务器压力剧增的情况下&#xff0c;根据实际业务情况及流量&#xff0c;对一些服务和页面有策略的不处理或换种简单的方式处理&#xff0c;从而释放服务器资源以保证核心交易正常运作或高效运作。 分布式系统的降级…

用Java实现贪吃蛇小游戏

一、创建新项目 首先创建一个新的项目&#xff0c;并命名为贪吃蛇。 其次在贪吃蛇项目下创建一个名为images的文件夹用来存放游戏相关图片。 然后再在项目的src文件下创建一个com.xxx.view的包用来存放所有的图形界面类&#xff0c;创建一个com.xxx.controller的包用来存放启…

基于AVR单片机的心电信号获取与分析

基于AVR单片机的心电信号获取与分析是一项常见的生物医学工程应用&#xff0c;用于监测和分析人体的心脏活动。本文将介绍基于AVR单片机的心电信号获取与分析的原理和设计&#xff0c;并提供相应的代码示例。 1. 概述 心电信号是记录和分析心脏电活动的重要手段。AVR单片机是…

04.webpack中css的压缩和抽离

1.抽离css文件 利用mini-css-extract-plugin插件&#xff0c;替代style-loader const MiniCssExtractPlugin require(mini-css-extract-plugin) module.exports smart(webpackCommonConf, {mode: production,output: {// filename: bundle.[contentHash:8].js, // 打包代码…

Oracle Data Redaction和Oracle Data Pump

本实验的使用环境基于之前的博客&#xff1a;一个简单的Oracle Redaction实验 本实验参考文档为15.14 Oracle Data Redaction and Oracle Data Pump 先创建directory并赋权&#xff1a; -- connect to database or pluggable database alter session set containerorclpdb1;…