当前位置: 首页 > news >正文

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访问端口&#xff08;相当于向外部提供可访问端口&#xff09; 4.将tomcat项目放在服务器tomcat的webapps里面 5.在mysql里创建项目数据库&#xff0c;运行sql创建表和导入数据 6.在配置文…...

剪映自动批量替换视频、图片素材教程,视频批量复刻、混剪裂变等功能介绍

一、三种批量替换模式的区别 二、混剪裂变替换素材 三、分区混剪裂变替换素材 四、按组精确替换素材 五、绿色按钮教程 &#xff08;一&#xff09;如何附加音频和srt字幕 &#xff08;二&#xff09;如何替换固定文本的内容和样式 &#xff08;三&#xff09;如何附加…...

el-dialog中调用resetFields()方法重置表单报错

前言 在开发中&#xff0c;弹框和表单是两个常见的组件&#xff0c;它们通常一起使用以实现用户交互和数据输入。然而&#xff0c;当我们尝试在弹框中调用表单的 resetFields() 方法时&#xff0c;有时会遇到报错的情况。 一、用法错误 确保 this.$refs[ruleForm].resetFields…...

分布式系统接口,如何避免重复提交

分布式系统接口&#xff0c;如何避免重复提交 1、基于Token的幂等设计原理实现步骤技术选型 2、基于Token的幂等设计原理实现步骤适用场景 3、幂等性设计原理实现方式 4、分布式锁原理实现方式适用场景 5、请求去重原理实现方式 6.前端防护原理实现方式适用场景 7.延迟队列原理…...

AI 声音:数字音频、语音识别、TTS 简介与使用示例

在现代 AI 技术的推动下&#xff0c;声音处理领域取得了巨大进展。从语音识别&#xff08;ASR&#xff09;到文本转语音&#xff08;TTS&#xff09;&#xff0c;再到个性化声音克隆&#xff0c;这些技术已经深入到我们的日常生活中&#xff1a;语音助手、自动字幕生成、语音导…...

【论文速读】| 人工智能驱动的网络威胁情报自动化

基本信息 原文标题&#xff1a;AI-Driven Cyber Threat Intelligence Automation 原文作者&#xff1a;Shrit Shah, Fatemeh Khoda Parast 作者单位&#xff1a;加拿大圭尔夫大学计算机科学学院 关键词&#xff1a;网络威胁情报&#xff0c;AI自动化&#xff0c;攻击技术和…...

什么是域名监控?

域名监控是持续跟踪全球域名系统&#xff08;DNS&#xff09;中变化以发现恶意活动迹象的过程。组织可以对其拥有的域名进行监控&#xff0c;以判断是否有威胁行为者试图入侵其网络。他们还可以对客户的域名使用这种技术以执行类似的检查。 你可以将域名监控比作跟踪与自己实物…...

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来加载设置项目本地的字体&#xff0c;先确保字体文件位于项目中或者可以从服务端获取到&#xff0c;这样就可以使用FontFaceObserver来检测并加载这些字体 主要有以下几步&#xff1a; npm或者yarn安装引入fontfaceobserver字体资源引入和font-face配置…...

【人工智能】Python常用库-PyTorch常用方法教程

PyTorch 是一个强大的开源深度学习框架&#xff0c;以其灵活性和动态计算图而广受欢迎。以下是 PyTorch 的详细教程&#xff0c;涵盖从基础到实际应用的使用方法。 1. 安装与导入 1.1 安装 PyTorch 访问 PyTorch 官方网站&#xff0c;根据系统、Python 版本和 CUDA 支持选择安…...

Android Studio安装TalkX AI编程助手

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

#渗透测试#红蓝攻防#HW#漏洞挖掘#漏洞复现02-永恒之蓝漏洞

免责声明 本教程仅为合法的教学目的而准备&#xff0c;严禁用于任何形式的违法犯罪活动及其他商业行为&#xff0c;在使用本教程前&#xff0c;您应确保该行为符合当地的法律法规&#xff0c;继续阅读即表示您需自行承担所有操作的后果&#xff0c;如有异议&#xff0c;请立即停…...

gitlab自动打包python项目

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

残差神经网络

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

mini-spring源码分析

IOC模块 关键解释 beanFactory&#xff1a;beanFactory是一个hashMap, key为beanName, Value为 beanDefination beanDefination: BeanDefinitionRegistry&#xff0c;BeanDefinition注册表接口&#xff0c;定义注册BeanDefinition的方法 beanReference&#xff1a;增加Bean…...

黑马程序员Java项目实战《苍穹外卖》Day01

苍穹外卖-day01 课程内容 软件开发整体介绍苍穹外卖项目介绍开发环境搭建导入接口文档Swagger 项目整体效果展示&#xff1a; ​ 管理端-外卖商家使用 ​ 用户端-点餐用户使用 当我们完成该项目的学习&#xff0c;可以培养以下能力&#xff1a; 1. 软件开发整体介绍 作为一…...

uniapp开发支付宝小程序自定义tabbar样式异常

解决方案&#xff1a; 这个问题应该是支付宝基础库的问题&#xff0c;除了依赖于官方更新之外&#xff0c;开发者可以利用《自定义 tabBar》曲线救国 也就是创建一个空内容的自定义tabBar&#xff0c;这样即使 tabBar 被渲染出来&#xff0c;但从视觉上也不会有问题 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 /…...

从Sigmoid函数到脉冲频率:步进电机S型加减速的数学建模与C/C++实现

1. 为什么步进电机需要S型加减速 我第一次接触步进电机控制时&#xff0c;以为只要给脉冲信号就能让电机转起来。结果在实际项目中&#xff0c;电机要么启动时丢步&#xff0c;要么停止时过冲&#xff0c;把机械结构撞得砰砰响。后来才知道&#xff0c;步进电机和普通直流电机不…...

Claude Code 工程化实战:从工具使用者到 Agent 构建者的进阶之路

Claude Code 工程化实战&#xff1a;从工具使用者到 Agent 构建者的进阶之路 声明&#xff1a; &#x1f4dd; 作者&#xff1a;甜城瑞庄的核桃&#xff08;ZMJ&#xff09; 原创学习笔记&#xff0c;欢迎分享&#xff0c;但请保留作者信息及原文链接哦&#xff5e; 摘要&#…...

低成本搭建AI知识库:Qwen3-Embedding-4B量化版仅需3GB显存教程

低成本搭建AI知识库&#xff1a;Qwen3-Embedding-4B量化版仅需3GB显存教程 1. 引言&#xff1a;为什么选择Qwen3-Embedding-4B&#xff1f; 在构建AI知识库时&#xff0c;文本向量化模型的选择至关重要。传统方案要么性能不足&#xff0c;要么资源消耗过大。Qwen3-Embedding-…...

SecGPT-14B实操手册:Gradio界面中temperature=0.3对安全答案确定性的影响

SecGPT-14B实操手册&#xff1a;Gradio界面中temperature0.3对安全答案确定性的影响 1. 引言&#xff1a;为什么安全问答需要“确定性”&#xff1f; 想象一下&#xff0c;你正在向一位网络安全专家咨询一个紧急的安全漏洞问题。你希望得到的回答是清晰、准确、且唯一的正确答…...

实战指南:如何用FAISS和GPT-4o-mini构建高效RAG系统(附开源代码)

实战指南&#xff1a;如何用FAISS和GPT-4o-mini构建高效RAG系统&#xff08;附开源代码&#xff09; 在人工智能领域&#xff0c;检索增强生成&#xff08;RAG&#xff09;技术正迅速成为连接大型语言模型与专业知识的桥梁。不同于传统LLM仅依赖预训练知识&#xff0c;RAG系统通…...

Oracle RAC实战:5分钟搞懂SCAN IP和VIP的区别与配置技巧

Oracle RAC实战&#xff1a;SCAN IP与VIP的深度解析与高效配置指南 引言 在Oracle RAC&#xff08;Real Application Clusters&#xff09;环境中&#xff0c;高可用性和负载均衡是核心诉求。SCAN IP和VIP作为两大关键技术组件&#xff0c;常常让刚接触RAC的DBA感到困惑。它们虽…...

Windows内存管理的隐形助手:Mem Reduct如何让老旧电脑重获新生?

Windows内存管理的隐形助手&#xff1a;Mem Reduct如何让老旧电脑重获新生&#xff1f; 【免费下载链接】memreduct Lightweight real-time memory management application to monitor and clean system memory on your computer. 项目地址: https://gitcode.com/gh_mirrors/…...

英飞凌Aurix2G TC3XX 中断路由与DMA联动实战解析

1. 中断与DMA联动的核心价值 第一次接触英飞凌Aurix2G TC3XX的中断路由功能时&#xff0c;我像发现新大陆一样兴奋。传统嵌入式开发中&#xff0c;ADC采样完成→CPU读取数据→存入内存的流程就像用勺子一勺一勺地运水&#xff0c;而中断触发DMA的机制则像接上了自来水管——数据…...

HashCheck:Windows系统下终极文件完整性验证解决方案

HashCheck&#xff1a;Windows系统下终极文件完整性验证解决方案 【免费下载链接】HashCheck HashCheck Shell Extension for Windows with added SHA2, SHA3, and multithreading; originally from code.kliu.org 项目地址: https://gitcode.com/gh_mirrors/ha/HashCheck …...

w3x2lni:魔兽地图跨版本转换的技术突破与实践指南

w3x2lni&#xff1a;魔兽地图跨版本转换的技术突破与实践指南 【免费下载链接】w3x2lni 魔兽地图格式转换工具 项目地址: https://gitcode.com/gh_mirrors/w3/w3x2lni 问题引入&#xff1a;版本壁垒下的魔兽地图开发困境 在魔兽争霸III的地图开发领域&#xff0c;版本迭…...