C7.【C++ Cont】范围for的使用和auto关键字
目录
1.知识回顾
2.范围for
格式
使用
运行结果
运行过程
范围for的本意
作用
注意
3.底层分析范围for的执行过程
反汇编代码
分析
4.auto关键字
格式
基本用法
在范围for中使用auto
1.知识回顾
for循环的使用参见25.【C语言】循环结构之for文章
2.范围for
C++11中引入范围for
格式
for ( 类型 变量名 : 数组名 )
{//......
}
使用
#include <iostream>
using namespace std;
int main()
{int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };for (int a : arr){cout << a << " ";}return 0;
}
运行结果
运行过程
范围for的本意
将arr数组中的元素,依次放在a变量中
作用
遍历容器如数组、vector和list等
注意
1.变量的类型和数组的类型要匹配
2.其对数组中所有元素进行遍历的,但是实际在做题的
过程中可能只需要遍历数组中指定个数的元素,此时范围fo不合适
3.范围for不能修改数组元素
3.底层分析范围for的执行过程
运行环境:debug+x86
打开VS2022,先在代码生成中改动两个地方
反汇编代码
#include <iostream>
using namespace std;
int main()
{push ebp mov ebp,esp sub esp,78h push ebx push esi push edi mov ecx,offset _2A500742_leetcode@cpp (03AE068h) call @__CheckForDebuggerJustMyCode@4 (03A1389h) nop int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };mov dword ptr [arr],1 mov dword ptr [ebp-24h],2 mov dword ptr [ebp-20h],3 mov dword ptr [ebp-1Ch],4 mov dword ptr [ebp-18h],5 mov dword ptr [ebp-14h],6 mov dword ptr [ebp-10h],7 mov dword ptr [ebp-0Ch],8 mov dword ptr [ebp-8],9 mov dword ptr [ebp-4],0Ah for (int a : arr)lea eax,[arr] mov dword ptr [ebp-2Ch],eax mov eax,dword ptr [ebp-2Ch] mov dword ptr [ebp-30h],eax mov eax,dword ptr [ebp-2Ch] add eax,28h mov dword ptr [ebp-34h],eax jmp main+7Ah (03A192Ah) mov eax,dword ptr [ebp-30h] add eax,4 mov dword ptr [ebp-30h],eax mov eax,dword ptr [ebp-30h] cmp eax,dword ptr [ebp-34h] je main+8Ch (03A193Ch) mov eax,dword ptr [ebp-30h] mov ecx,dword ptr [eax] mov dword ptr [ebp-38h],ecx {}jmp main+71h (03A1921h) return 0;xor eax,eax
}pop edi pop esi pop ebx mov esp,ebp pop ebp ret
分析
上方代码较为复杂,见105.5【x86汇编】底层分析范围for的执行过程
4.auto关键字
之前在C语言的16.【C语言】初识常见关键字 上文章中提到过auto的一点内容
节选内容
auto自动:每个局部变量都由auto修饰,含义:自动创建,自动销毁
auto int a=0;等价于int a=0;
但本文讲的auto与上方不同,其让可让编译器自动推导出变量的类型
格式
auto 变量名 = 变量值;
基本用法
#include <iostream>
using namespace std;
int main()
{auto a = 1;auto b = 1.2;auto c = 'c';return 0;
}
将下列代码用VS2022打开
鼠标放在变量值旁边,会自动显示变量的类型
在范围for中使用auto
直接让编译器推测a的类型,不用手动分析
#include <iostream>
using namespace std;
int main()
{int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };for (auto a : arr){cout << a << " ";}return 0;
}
相关文章:

C7.【C++ Cont】范围for的使用和auto关键字
目录 1.知识回顾 2.范围for 格式 使用 运行结果 运行过程 范围for的本意 作用 注意 3.底层分析范围for的执行过程 反汇编代码 分析 4.auto关键字 格式 基本用法 在范围for中使用auto 1.知识回顾 for循环的使用参见25.【C语言】循环结构之for文章 2.范围for C…...

联通云服务器部署老项目tomcat记录
1.先在服务器上安装mysql和tomcat 2.tomcat修改端口 3.在联通云运控平台配置tomcat访问端口(相当于向外部提供可访问端口) 4.将tomcat项目放在服务器tomcat的webapps里面 5.在mysql里创建项目数据库,运行sql创建表和导入数据 6.在配置文…...

剪映自动批量替换视频、图片素材教程,视频批量复刻、混剪裂变等功能介绍
一、三种批量替换模式的区别 二、混剪裂变替换素材 三、分区混剪裂变替换素材 四、按组精确替换素材 五、绿色按钮教程 (一)如何附加音频和srt字幕 (二)如何替换固定文本的内容和样式 (三)如何附加…...

el-dialog中调用resetFields()方法重置表单报错
前言 在开发中,弹框和表单是两个常见的组件,它们通常一起使用以实现用户交互和数据输入。然而,当我们尝试在弹框中调用表单的 resetFields() 方法时,有时会遇到报错的情况。 一、用法错误 确保 this.$refs[ruleForm].resetFields…...
分布式系统接口,如何避免重复提交
分布式系统接口,如何避免重复提交 1、基于Token的幂等设计原理实现步骤技术选型 2、基于Token的幂等设计原理实现步骤适用场景 3、幂等性设计原理实现方式 4、分布式锁原理实现方式适用场景 5、请求去重原理实现方式 6.前端防护原理实现方式适用场景 7.延迟队列原理…...

AI 声音:数字音频、语音识别、TTS 简介与使用示例
在现代 AI 技术的推动下,声音处理领域取得了巨大进展。从语音识别(ASR)到文本转语音(TTS),再到个性化声音克隆,这些技术已经深入到我们的日常生活中:语音助手、自动字幕生成、语音导…...

【论文速读】| 人工智能驱动的网络威胁情报自动化
基本信息 原文标题:AI-Driven Cyber Threat Intelligence Automation 原文作者:Shrit Shah, Fatemeh Khoda Parast 作者单位:加拿大圭尔夫大学计算机科学学院 关键词:网络威胁情报,AI自动化,攻击技术和…...
什么是域名监控?
域名监控是持续跟踪全球域名系统(DNS)中变化以发现恶意活动迹象的过程。组织可以对其拥有的域名进行监控,以判断是否有威胁行为者试图入侵其网络。他们还可以对客户的域名使用这种技术以执行类似的检查。 你可以将域名监控比作跟踪与自己实物…...

vue3 发送 axios 请求时没有接受到响应数据
<script setup> import Edit from ./components/Edit.vue import axios from axios import { onMounted,ref } from vue// TODO: 列表渲染 //装数据的列表 const list ref([]) const count ref(0) const getList async () > {//通过发送 /list 请求从后端拿到列表数…...
前端使用fontfaceobserver库实现字体设置
要使用FontFaceObserver来加载设置项目本地的字体,先确保字体文件位于项目中或者可以从服务端获取到,这样就可以使用FontFaceObserver来检测并加载这些字体 主要有以下几步: npm或者yarn安装引入fontfaceobserver字体资源引入和font-face配置…...
【人工智能】Python常用库-PyTorch常用方法教程
PyTorch 是一个强大的开源深度学习框架,以其灵活性和动态计算图而广受欢迎。以下是 PyTorch 的详细教程,涵盖从基础到实际应用的使用方法。 1. 安装与导入 1.1 安装 PyTorch 访问 PyTorch 官方网站,根据系统、Python 版本和 CUDA 支持选择安…...

Android Studio安装TalkX AI编程助手
文章目录 TalkX简介编程场景 TalkX安装TalkX编程使用ai编程助手相关文章 TalkX简介 TalkX是一款将OpenAI的GPT 3.5/4模型集成到IDE的AI编程插件。它免费提供特定场景的AI编程指导,帮助开发人员提高工作效率约38%,甚至在解决编程问题的效率上提升超过2倍…...

#渗透测试#红蓝攻防#HW#漏洞挖掘#漏洞复现02-永恒之蓝漏洞
免责声明 本教程仅为合法的教学目的而准备,严禁用于任何形式的违法犯罪活动及其他商业行为,在使用本教程前,您应确保该行为符合当地的法律法规,继续阅读即表示您需自行承担所有操作的后果,如有异议,请立即停…...

gitlab自动打包python项目
现在新版的gitlab可以不用自己配置runner什么的了 直接写.gitlab-ci.yml文件就行,这里给出一个简单的依靠setup把python项目打包成whl文件的方法 首先写.gitlab-ci.yml文件,放到项目根目录里 stages: # List of stages for jobs, and their or…...

残差神经网络
目录 1. 梯度消失问题 2. 残差学习的引入 3. 跳跃连接(Shortcut Connections) 4. 恒等映射与维度匹配 5. 反向传播与梯度流 6. 网络深度与性能 总结 残差神经网络的原理是基于“残差学习”的概念,它旨在解决深度神经网络训练中的梯度消…...

mini-spring源码分析
IOC模块 关键解释 beanFactory:beanFactory是一个hashMap, key为beanName, Value为 beanDefination beanDefination: BeanDefinitionRegistry,BeanDefinition注册表接口,定义注册BeanDefinition的方法 beanReference:增加Bean…...

黑马程序员Java项目实战《苍穹外卖》Day01
苍穹外卖-day01 课程内容 软件开发整体介绍苍穹外卖项目介绍开发环境搭建导入接口文档Swagger 项目整体效果展示: 管理端-外卖商家使用 用户端-点餐用户使用 当我们完成该项目的学习,可以培养以下能力: 1. 软件开发整体介绍 作为一…...

uniapp开发支付宝小程序自定义tabbar样式异常
解决方案: 这个问题应该是支付宝基础库的问题,除了依赖于官方更新之外,开发者可以利用《自定义 tabBar》曲线救国 也就是创建一个空内容的自定义tabBar,这样即使 tabBar 被渲染出来,但从视觉上也不会有问题 1.官方文…...

python+django5.1+docker实现CICD自动化部署springboot 项目前后端分离vue-element
一、开发环境搭建和配置 # channels是一个用于在Django中实现WebSocket、HTTP/2和其他异步协议的库。 pip install channels#channels-redis是一个用于在Django Channels中使用Redis作为后台存储的库。它可以用于处理#WebSocket连接的持久化和消息传递。 pip install channels…...

python代码示例(读取excel文件,自动播放音频)
目录 python 操作excel 表结构 安装第三方库 代码 自动播放音频 介绍 安装第三方库 代码 python 操作excel 表结构 求出100班同学的平均分 安装第三方库 因为这里的表结构是.xlsx文件,需要使用openpyxl库 如果是.xls格式文件,需要使用xlrd库 pip install openpyxl /…...

国防科技大学计算机基础课程笔记02信息编码
1.机内码和国标码 国标码就是我们非常熟悉的这个GB2312,但是因为都是16进制,因此这个了16进制的数据既可以翻译成为这个机器码,也可以翻译成为这个国标码,所以这个时候很容易会出现这个歧义的情况; 因此,我们的这个国…...

linux之kylin系统nginx的安装
一、nginx的作用 1.可做高性能的web服务器 直接处理静态资源(HTML/CSS/图片等),响应速度远超传统服务器类似apache支持高并发连接 2.反向代理服务器 隐藏后端服务器IP地址,提高安全性 3.负载均衡服务器 支持多种策略分发流量…...
在HarmonyOS ArkTS ArkUI-X 5.0及以上版本中,手势开发全攻略:
在 HarmonyOS 应用开发中,手势交互是连接用户与设备的核心纽带。ArkTS 框架提供了丰富的手势处理能力,既支持点击、长按、拖拽等基础单一手势的精细控制,也能通过多种绑定策略解决父子组件的手势竞争问题。本文将结合官方开发文档,…...
连锁超市冷库节能解决方案:如何实现超市降本增效
在连锁超市冷库运营中,高能耗、设备损耗快、人工管理低效等问题长期困扰企业。御控冷库节能解决方案通过智能控制化霜、按需化霜、实时监控、故障诊断、自动预警、远程控制开关六大核心技术,实现年省电费15%-60%,且不改动原有装备、安装快捷、…...

2021-03-15 iview一些问题
1.iview 在使用tree组件时,发现没有set类的方法,只有get,那么要改变tree值,只能遍历treeData,递归修改treeData的checked,发现无法更改,原因在于check模式下,子元素的勾选状态跟父节…...

网站指纹识别
网站指纹识别 网站的最基本组成:服务器(操作系统)、中间件(web容器)、脚本语言、数据厍 为什么要了解这些?举个例子:发现了一个文件读取漏洞,我们需要读/etc/passwd,如…...
IP如何挑?2025年海外专线IP如何购买?
你花了时间和预算买了IP,结果IP质量不佳,项目效率低下不说,还可能带来莫名的网络问题,是不是太闹心了?尤其是在面对海外专线IP时,到底怎么才能买到适合自己的呢?所以,挑IP绝对是个技…...

【分享】推荐一些办公小工具
1、PDF 在线转换 https://smallpdf.com/cn/pdf-tools 推荐理由:大部分的转换软件需要收费,要么功能不齐全,而开会员又用不了几次浪费钱,借用别人的又不安全。 这个网站它不需要登录或下载安装。而且提供的免费功能就能满足日常…...

windows系统MySQL安装文档
概览:本文讨论了MySQL的安装、使用过程中涉及的解压、配置、初始化、注册服务、启动、修改密码、登录、退出以及卸载等相关内容,为学习者提供全面的操作指导。关键要点包括: 解压 :下载完成后解压压缩包,得到MySQL 8.…...
Qt 事件处理中 return 的深入解析
Qt 事件处理中 return 的深入解析 在 Qt 事件处理中,return 语句的使用是另一个关键概念,它与 event->accept()/event->ignore() 密切相关但作用不同。让我们详细分析一下它们之间的关系和工作原理。 核心区别:不同层级的事件处理 方…...