c++中的auto、const auto&

现代C++编程:掌握auto类型推导与范围for循环提升开发效率 在C++编程中,类型系统和循环控制是基础且核心的概念。传统C++代码需要显式声明冗长的类型并手动管理迭代器,这不仅增加了编码负担,也容易引入错误。现代C++通过编译期类型推导和简化遍历语法,从根本上优化了开发体验。自动类型推导(auto)允许编译器根据初始化表达式推断变量类型,遵循模板参数推导规则,能正确处理值类型、引用和万能引用。基于范围的for循环则通过自动获取容器的起止迭代器,让遍历操作更直观安全。这两项技术的核心价值在于提升代码的可读性、编写正确率和维护性,尤其适用于模板编程、复杂容器操作和算法实现 阅读详情

先介绍一下auto、const:

    在块作用域、命名作用域、循环初始化语句等等  中声明变量时,关键词auto用作类型指定符。

   const:修饰符

接下来我们细细分析一下:

(1)auto

    auto即 for(auto x:range)  这样会拷贝一份range元素,而不会改变range中元素;

 但是!(重点)  使用for(auto x:vector<bool>)时得到一个proxy class,操作时会改变vector<bool>本身元素。应用:for(bool x:vector<bool>)

(2)auto&

   当需要修改range中元素,用for(auto& x:range)

 当vector<bool>返回临时对象,使用auto&会编译错误,临时对象不能绑在non-const l-value reference (左值引用)需使用auto&&,初始化右值时也可捕获

(3)const auto&

     当只想读取range中元素时,使用const auto&,如:for(const auto&x:range),它不会进行拷贝,也不会修改range   

(4)const auto

    当                                                                                                                                                                                                                                                                     需要拷贝元素,但不可修改拷贝出来的值时,使用 for(const auto x:range),避免拷贝开销                                                                                                       

整理一下:

   想要拷贝元素:for(auto x:range)

   想要修改元素 :  for(auto &&x:range)

   想要只读元素:for(const auto& x:range)        
FFmpeg视频缩放终极指南:从基础命令到保持宽高比的5种实战技巧 本文是FFmpeg视频缩放的终极指南,详细讲解了从基础命令到保持宽高比的5种实战技巧。针对不同平台(如抖音、B站、Instagram)的分辨率要求,提供了具体的参数模板和批量处理脚本,帮助内容创作者高效、精准地调整视频大小,避免画面变形或黑边问题,实现多平台适配。 阅读详情

相关推荐

Proteus+汇编+8086电子时钟实战:从框架搭建到中断驱动的核心实现

本文详细介绍了使用Proteus仿真软件和8086汇编语言实现电子时钟的完整过程。从程序框架搭建、内存分段模型理解,到核心的8259中断控制器配置与编程,再到中断服务程序编写和数码管动态扫描显示驱动,系统阐述了底层软硬件协同开发的核心原理与实战步骤。该项目是深入理解计算机中断机制和汇编语言编程的绝佳实践。

weixin_29189381的博客 413

const auto&的作用

本文记录了const auto&的作用

chen_znn的博客 2624

基于Web的智能家居(源码+开题)

实践上,智能家居系统的普及和应用将极大改善人们的居住体验,提高生活质量,同时也有助于促进智能家居产业链的发展和完善,为社会经济发展注入新的活力。此外,本研究还将对基于Web的智能家居系统的用户体验进行深入研究,通过用户调研和数据分析,不断优化系统功能和界面设计,提升用户的使用体验和满意度。针对以上问题,本研究将综合运用物联网、云计算、大数据等新一代信息技术,通过系统架构设计、功能模块开发、安全性保障、用户体验优化等多个方面的研究工作,力求为基于Web的智能家居系统的研发和应用提供全面而有效的解决方案。

sryue06的博客 1904

C++入门之auto关键字&&内联函数

延续之前的C++入门,本篇介绍C++的auto关键字的使用方法以及内联函数在早期C/C++中auto的含义是:使用auto修饰的变量,是具有自动存储器的局部变量,但遗憾的是一直没有人去使用它,大家可思考下为什么?C++11中,标准委员会赋予了auto全新的含义即:auto不再是一个存储类型指示符,而是作为一个新的类型指示符来指示编译器,auto声明的变量必须由编译器在编译时期推导而得return 10;int a = 10;auto b = a;

Ruiren_的博客 3595

从Google到LLVM:5种主流clang-format预设风格横向对比(含代码对比图)

本文横向对比了LLVM、Google、Chromium、Mozilla和WebKit五种主流的clang-format预设代码风格。通过同一段C++代码的格式化效果对比图,直观展示了它们在指针对齐、大括号换行、缩进等关键细节上的差异,并提供了基于团队背景与项目基因的选型决策指南。

weixin_28828243的博客 444

kepserverEX6创建tcpserver接入自有协议(使用ucon接入)

kepserverEX6创建tcpserver接入自有协议

qq_38388813的博客 1632

算法笔记 C++中const和auto的那些事 HERODING的算法之路

C++中const和auto的那些事前言1. const1.1 const修饰普通类型的变量1.2 const 修饰指针变量1.2.1 常量指针1.2.2 指针常量1.2.3 指向常量的常指针1.2.4 三者区别2. auto2.1 auto的用法2.2 auto的注意事项3. const与auto4. 总结 前言 最近做题在暴力的时候发现了一个问题,就是在一些数据量很大的时候(游离于内存的超出范围),如果是const auto&amp; 遍历就不会出问题,但是auto或者const auto仍然会超时,所

HERODING23的博客 5091

spoon工具的常用基础操作

先创建一个作业,这个作业流程,包括进行设置变量转换,查询结果输出转换,方便后续循环。整个流程写完后,执行作业5_执行整个流程,成功后,可以在数据库查看结果。,新建一个转换,excel表输入然后复制记录到结果,保存转换文件。这三个用户下 都有一张emp表 分别是 三个部门的用户信息。,新建一个数据库连接,变量命名用户名和密码。成功执行后,可以到保存的excel位置进行查看。emp表输入,可以进行预览查看数据有没有过来。输出到一直excel表,运行结果输出。,新建一个转换,拖拽。

qq_43583887的博客 5831

C++11:右值和右值引用

左值和右值是独立于他们的类型的,右值引用类型可能是左值也可能是右值。编译器会将已命名的右值引用视为左值,将未命名的右值引用视为右值。auto&&或者函数参数类型自动推导的T&&是一个未定的引用类型,它可能是左值引用也可能是右值引用类型,这取决于初始化的值类型。通过右值推导 T&& 或者 auto&& 得到的是一个右值引用类型,其余都是左值引用类型。......

oorik的博客 1625

MIC(Maximal Information Coefficient)最大互信息系数

MIC(Maximal Information Coefficient)最大互信息系数是一种用于衡量两个变量之间相关性的统计量。它扩展了传统的互信息(MI)和条件互信息(CMI)的概念,具有更广泛的应用范围。MIC能够捕获包括功能性和非功能性的广泛的关联,具有普遍性和公平性。普遍性意味着在足够的样本量下,MIC能够捕捉到广泛的相关关系,而不仅仅局限于特定的功能类型;公平性则意味着MIC对不同类型的包含同等噪声的关系给出了相似的分数。需要注意的是,虽然MIC具有很多优点,但它也有一些局限性。

qlkaicx的博客 4605

nvidia系列教程-AGX-Orin基础环境搭建

NVIDIA Jetson AGX Orin 是一款功能强大的嵌入式AI平台,专为需要高性能和低功耗的边缘计算应用设计。无论是自动驾驶、机器人,还是智能监控系统,Jetson AGX Orin 都能为这些应用提供强大的计算能力。本篇博客将为大家详细介绍如何在AGX Orin(32GB)上搭建基础开发环境,包括系统安装、CUDA和cuDNN的配置等,帮助你快速上手这个强大的平台。架构: 搭载 56 个 Tensor Core 的 1792 核 NVIDIA Ampere c GPUCUDA Cores。

flypig has a dream! 2797

C++ 中的auto、auto&、auto&&、const auto&

/* * @Description: * @Author: CM * @Date: 2021-04-23 14:23:56 * @LastEditTime: 2021-04-23 14:40:13 * @LastEditors: CM */ #include <iostream> #include <vector> using namespace std; class A { public: /* 构造函数 */ A() {

weixin_42442319的博客 1万+

关于cefsharp访问iqiyi.com显示403 Forbidden解决办法(2种方法)

cefsharp不加UserAgent的默认值为 (注意126是当前cefsharp的版本)Edge浏览器的UserAgent 为 (edge的版本是128的)说明根据浏览器的不同,UserAgent可能不太一样。

无线智能模块 可视DIY智能专家 1319

c++中的auto、auto&、const auto&等

auto:在块作用域、命名作用域、循环初始化语句等中声明变量时,关键词auto用作类型指定符。 const:修饰符 ​想要拷贝元素:for(auto x:range) ​ 想要修改元素:for(auto &x:range) ​ 想要只读元素:for(const auto&amp; x:range) auto auto即 for(auto x:range) 这样会拷贝一份range元素,而不会改变range中元素; 但是!(重点)使用for(auto x:vector)时得到一个prox

LiuXF93的博客 2619

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

C++11 range-for 中的auto,auto&, auto&&, const auto&

C++ range-for auto auto& auto&&

ibos168的博客 3070

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

C++ auto用法及应用详解

C++ auto用法及应用详解1.auto的推导规则2.auto1.1 auto例子1.2 const auto例子3.声明为auto引用:auto &4.auto在编程时真正的用途4.1代替冗长复杂的变量声明4.2定义模板参数时,用于声明依赖模板参数的变量4.3模板函数依赖于模板参数的返回值 编程时常常需要把表达式的值赋给变量,这就要求声明变量时清楚的知道表达式的类型。然而有些情况是声明的变量的类型我们并不知道,比如在模板编程时。为了解决这个问题,C++11引入了auto类型说明符,用它来让编译器

weixin_43744293的博客 8万+

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

auto, auto&, const auto&以及其它形式的auto变种在for-range loop的选择

首先看第一种情况,auto, 即for(auto x : range)。这一种用法将会为range的每一种元素都创建一份拷贝,所以当你不想改变range里面的元素而想拷贝时,使用这一种用法。 for(auto&amp; x : range),当你想要修改range(不含有proxy class reference处理时)里面的元素时,使用auto&amp;. auto&amp;& 这就是两全其美的办法,for(auto && x : range). 当被左值初始化时,auto&amp

AbiUni(YY熊) 1039

c++ 中 auto, auto & 和 const auto & 的区别

c++ 中 auto,auto & 和 const auto & 的区别。

lele_ne的博客 3117

C++11的类型推导——auto

auto不能⾃动推导出引⽤类型,所以我们如果想将auto推导为引⽤类型,需要明确的写:auto &x=i(i是引用);ri1是ci的引用,而ri1推导时类型是引用对象的类型(上面的引用规则,和ri1、ri2前面的const没关系了,因为是引用推导)因此ri1是顶层const(ci的),而auto推导r4又会忽略顶层const,ci因此r4类型为int。⾸先使⽤引⽤其实是使⽤引⽤的对象,特别是当引⽤被⽤作初始值时,真正参与初始化的其实是引⽤对象的值,所以编译器推导auto为引⽤对象的类型,⽽不是引⽤。

czt230610的博客 571

auto和const auto&的用法

1.auto即for(auto x:range) 会拷贝一份range元素,不会改变range中的元素; 2.只读取range中的元素,使用const auto&amp;,如:for(const auto&amp;x:range),它不会进行拷贝,也不会修改range,效率会比用auto快一点。 想要拷贝元素:for(auto x:range) 想要修改元素:for(auto &&x:range) 只读元素:for(const auto&amp; x:range) ...

Baron的博客 3408

有关for(auto x: vector<int>v)的问题

for(auto i: container)遍历容器元素 C ++ 11 的新特性,后者是可以遍历的容器/流,i可以获得容器中的每一个元素。 主要方式有三种 1.auto: 拷贝元素但不会修改原容器/流; 2.auto&amp;:拷贝并修改; 3.const auto&amp;:只读取容器中元素,不会拷贝,也不修改; 4.const auto:拷贝且不可修改拷贝出来的值; #include<iostream> #include<vector> using namesp

qq_57328462的博客 1000

C++类型推导auto与decltype使用技巧

在现代C++编程中,类型推导是提升代码简洁性和可维护性的重要工具。auto和decltype作为C++11引入的关键字,能够帮助开发者减少冗余的类型声明,同时增强代码的灵活性和表达力。本文将深入探讨auto和decltype的使用技巧,帮助读者掌握它们的核心应用场景,并避免常见陷阱。auto关键字能够根据初始化表达式自动推导变量类型,特别适用于复杂类型或模板代码中。C++类型推导:auto与decltype的实用技巧。自动类型推导auto的常见用法。

pkddwy_331的博客 199
上一篇: WebSocket协议简介
Add_a_cat
博客等级 码龄10年 5粉丝 44原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值