C++:二维数组的遍历

方式一:

#include <vector>  
#include <iostream>  int main() {  // 初始化一个2x3的二维向量(矩阵)  std::vector<std::vector<float>> matrix = {  {1.0, 2.0, 3.0}, // 第一行  {4.0, 5.0, 6.0}  // 第二行  };  // 遍历并打印矩阵  for (const auto& row : matrix) {  for (auto value : row) {  std::cout << value << " ";  }  std::cout << std::endl;  }  return 0;  
}

在C++中,当你使用范围基于的for循环(for (element : range))时,你实际上是在遍历一个给定的范围(range),并且每次迭代都会从该范围中提取出一个元素(element)供循环体使用。在这个特定的例子中,row 并不是每行的“地址”,而是对当前正在遍历的行的引用(由于你在外层循环中使用了 const auto& row)。但是,这里的重点是 row 代表了二维向量 matrix 中的一行,即一个 std::vector<float> 类型的对象。

当你写 for (float value : row) 时,你实际上是在告诉编译器:“对于 row 中的每一个元素(即 row 这个 std::vector<float> 中的每一个 float 值),都将其赋值给 value,并执行循环体。” 这里的关键是理解 row 是一个可以迭代的容器(在这个例子中是 std::vector<float>),而范围基于的for循环能够自动处理这种容器的迭代。

编译器会处理迭代器的细节,但对于你来说,你只需要知道你可以像这样遍历 row 中的每个元素即可。具体来说,编译器会生成一个迭代器(在这个情况下是 std::vector<float>::iterator 或 std::vector<float>::const_iterator,取决于 row 是否被声明为 const),并使用它来遍历 row 中的所有元素。但是,这些细节对于编写代码的你来说是隐藏的。

因此,即使 row 是对二维向量中一行的引用,你仍然可以直接使用范围基于的for循环来遍历这一行的所有元素,而无需关心迭代器的具体实现。这是C++标准库提供的一种非常便捷和直观的遍历容器元素的方式。

方式二 :

#include <vector>  
#include <iostream>  int main() {  // 初始化一个2x3的二维向量(矩阵)  std::vector<std::vector<float>> matrix = {  {1.0, 2.0, 3.0}, // 第一行  {4.0, 5.0, 6.0}  // 第二行  };  // 获取行数(外层向量的元素个数)  int rows = matrix.size();  // 遍历行  for (int i = 0; i < rows; ++i) {  // 获取当前行的元素个数(内层向量的元素个数)  int cols = matrix[i].size();  // 遍历列  for (int j = 0; j < cols; ++j) {  // 打印当前元素  std::cout << matrix[i][j] << " ";  }  // 打印完一行后换行  std::cout << std::endl;  }  return 0;  
}

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

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

相关文章

机器学习 - 文本特征处理之 TF 和 IDF

TF&#xff08;Term Frequency&#xff0c;词频&#xff09;和IDF&#xff08;Inverse Document Frequency&#xff0c;逆文档频率&#xff09;是文本处理和信息检索中的两个重要概念&#xff0c;常用于计算一个词在文档中的重要性。下面是详细解释&#xff1a; TF&#xff08…

【Python文件】操作终极指南:高效管理和处理文件系统的必备技能

目录 ​编辑 1. 文件的基础操作 1.1 打开/关闭文件 ​编辑 示例代码 文件对象 使用with语句打开文件 2. 读文件 2.1 使用read方法读取文件 2.2 使用readline方法读取文件 2.3 使用readlines方法读取文件 2.4 使用for循环读取文件 3. 写文件 3.1 使用write方法写文…

前言:Gradle 基本知识

既然知道有 Gradle 了&#xff0c;那么就大体上知道了其作用&#xff0c;在此不再赘述。此处讲解的是实际开发过程中可能会用到的知识。 环境变量 Gradle 有两个环境变量&#xff0c;分别是 GRADLE_HOME 和 GRADLE_USER_HOME。 GRADLE_HOME 类似于 JAVA_HOME&#xff0c;当…

B组亚太赛数学建模

问题1 1.对训练数据集进行数据清洗&#xff0c;处理缺失值和异常值。 2.采用散点图作为可视化手段。 3.采用皮尔逊相关系数进行相关性分析。 4.提出预防措施。 问题2 1.采用k-means聚类算法将洪水概率分为高中低三个群组。 2.通过线性回归模型计算特征权重。 3.选择特定…

django高校教务系统-计算机毕业设计源码81661

目 录 摘要 1 绪论 1.1 研究背景 1.2目的及意义 1.3论文结构与章节安排 2 高校教务系统设计分析 2.1 可行性分析 2.1.1 技术可行性分析 2.1.2 经济可行性分析 2.1.3 法律可行性分析 2.2 系统功能分析 2.2.1 功能性分析 2.2.2 非功能性分析 2.3 系统用例分析 2.4…

微信云开发:10个避免资源无效消耗的小妙招

1 合理设计数据库结构&#xff0c;减少读写次数 显示商品详情页时&#xff0c;要尽可能仅读取一次数据库&#xff0c;这就要求设计数据库时&#xff0c;把商品基本信息、商品图片、用户评论等都放在同个数据文档中 2 一次性读取较多数据 当显示一个列表页时&#xff0c;尽可能一…

【新能源时代!看大模型(LLMs)如何助力汽车自动驾驶!】

文末有福利&#xff01; 引言 本文主要介绍大模型(LLMs)如何助力汽车自动驾驶&#xff0c;简单来说&#xff0c;作者首先带大家了解大模型的工作模式&#xff0c;然后介绍了自动驾驶大模型的3大应用场景&#xff0c;最后指出自动驾驶大模型将会是未来的发展趋势&#xff0c;只…

RedHat运维-Linux SSH基础2-基于公钥认证

1. 要想配置基于公钥认证的SSH连接&#xff0c;而不是基于密码认证的SSH连接&#xff0c;只需要将自己的公钥传送给对方即可&#xff0c;假如公钥是~/.ssh/id_rsa.pub&#xff0c;对方是centos192.168.197.128&#xff0c;则命令是____________________________________&#x…

制定事件响应计划的四个关键步骤,如何做到风险闭环

一个有效的安全事件响应策略的关键组成部分有哪些&#xff1f;一个有效的安全事件响应策略包括四个关键组成部分&#xff0c;它们协同工作以确保对网络安全问题的快速和有效响应。 一个有效的安全事件响应策略的关键组成部分有哪些&#xff1f; 一个有效的安全事件响应策略包括…

Linux笔记之二

Linux笔记之二 一、文件属性学习二、软链接和硬链接1.软链接2.硬链接 三、Vim编辑器四、账号管理总结 一、文件属性学习 Linux 系统是一种典型的多用户系统&#xff0c;不同的用户处于不同的地位&#xff0c;拥有不同的权限。为了保护系统的安全性&#xff0c;Linux系统对不同…

PCIe物理层IP和GT口的关系

PCIe物理层IP和GT口在Xilinx FPGA中如何协同工作取决于具体的设计和应用场景。简要描述一下它们如何结合使用&#xff1a; GT口的功能&#xff1a; GT口是Xilinx FPGA中的高速串行通信接口&#xff0c;能够支持多种协议如PCIe、Ethernet、SATA等。GT口负责处理高速数据传输的物…

HTML5使用<mark>标签:高亮显示文本

1、<mark>标签的使用 mark 标签用于表示页面中需要突出显示或高亮的一段文本&#xff0c;这段文本对于当前用户具有参考作用。它通常在引用原文以引起读者注意时使用。<mark>标签的作用相当于使用一支荧光笔在打印的纸张上标出一些文字。它与强调不同&#xff0c;…

短视频商城系统源码揭秘:架构设计与实现

在短视频平台和电商平台蓬勃发展的背景下&#xff0c;短视频商城系统应运而生&#xff0c;融合了短视频内容和电商功能&#xff0c;给用户带来了全新的购物体验。本文将揭示短视频商城系统的源码架构设计与实现&#xff0c;帮助开发者了解该系统的内部工作原理及其关键技术。 …

深度学习基础以及vgg16讲解

一 什么是卷积 上图所示&#xff0c;为图像边缘提取得一个卷积过程&#xff0c;卷积核就是计算当前像素左右两边得像素差&#xff0c;这个差值越大代表越可能是图像边缘。因此当实现其它功能时&#xff0c;只需要调整卷积核得参数即可。深度学习的训练其实就是在确定这些参数。…

学习笔记——动态路由——OSPF(邻接/邻居)

十、OSPF的邻接/邻居 1、OSPF路由器之间的关系 (1)基本介绍 在OSPF网络中&#xff0c;为了交换链路状态信息和路由信息&#xff0c;邻居设备之间首先要建立邻接关系&#xff0c;邻居(Neighbors)关系和邻接(Adjacencies)关系是两个不同的概念。 OSPF路由器的两种关系&#x…

Type-C接口快充取电技术的实现

Type-C接口快充取电技术的实现 Type-C接口快充取电技术主要通过USB PD&#xff08;Power Delivery&#xff09;协议实现。这种技术利用了Type-C接口的物理特性和PD协议的智能性&#xff0c;实现了高效、安全、快速的充电过程。具体实现过程如下&#xff1a; 接口连接与检测&a…

如何在Java中使用Docker

如何在Java中使用Docker 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01; 什么是Docker&#xff1f; Docker是一种容器化平台&#xff0c;可以将应用程序及其依…

51单片机基础11——蓝牙模块控制亮灭

串口初试——蓝牙模块 蓝牙模块的使用1. 软硬件条件2. 蓝牙模块3. 代码(分文件处理之后的代码) 蓝牙模块的使用 1. 软硬件条件 单片机型号&#xff1a;STC89C52RC开发环境&#xff1a;KEIL4烧录软件串口通信软件&#xff1a;stc-isp蓝牙模块&#xff1a;HC-04LED模块(高电平点…

STM32CubeMX——定时器产生PWM基础(HAL库)

目录&#xff1a; 一、STM32CubeMX 配置1、选择定时器通道&#xff1a;2、设置 TIM2 channel1 的预分频器、自动重装等值&#xff1a; 二、keil5 进一步编程1、开启定时器2 通道 1 的 PWM 输出&#xff1a;2、改变 CCR 值&#xff08;改变占空比&#xff09;&#xff1a; 参考文…