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

auto的使用场景

auto的两面性

合理使用auto 不仅可以减少代码量, 也会大大提高代码的可读性.
但是事情总有它的两面性
如果滥用auto, 则会让代码失去可读性

推荐写法

这里推荐两种情况下使用auto

  • 一眼就能看出声明变量的初始化类型的时候

    比如迭代器的循环, 用例如下

#include <iostream>
#include <map>
using namespace std;void test1()
{map<string, int> stoi;stoi["123"] = 1;stoi["456"] = 2;stoi["789"] = 3;// map<sting, int>::const_iterator 的类型, 直接写为auto// 大大减少了代码量for (auto i = stoi.begin(); i != stoi.end(); i++){cout << i->first << ";" << i->second << endl;}// pair<string, int>& it : stoifor (auto& i : stoi){cout << i.first << ':' << i.second << endl;}
}int main()
{test1();return 0;
}

执行结果
在这里插入图片描述

  • 对于复杂的类型
    比如lambda表达式等, 用例如下
void test2()
{// 用函数指针接收, 写法非常麻烦int(*p)(int, int) = [](int a1, int a2) {return a1 + a2; };cout << p(1, 2) << endl;;// 使用auto大大减少了代码量auto p2 = [](int a1, int a2) {return a1 + a2; };cout << p(1, 2) << endl;cout << typeid(p).name() << endl;cout << typeid(p2).name() << endl;
}
int main()
{test2();return 0;
}

执行结果
在这里插入图片描述

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 跨境电商库存管理:销毁成本的关键因素解析
  • 设计模式 15 解释器模式
  • 二手车交易App开发前景分析
  • 基于OpenCV+MFC的KCF测速软件
  • redis通用命令
  • SpringWeb 重定向
  • 损失函数、成本函数cost 、最大似然估计
  • Linux 中的中断响应机制
  • 数学建模学习(122):基于PPF-AHP的多准则决策分析—以城市交通枢纽选址为例
  • Part4-DOM学习笔记-获取元素属性及节点操作
  • 工商业光伏的三大新模式
  • C语言选择结构程序设计
  • Mamba介绍,和Transformer对比
  • 日结兼职零工平台小程序系统开发制作方案
  • 【机器学习】梯度下降算法
  • 【Under-the-hood-ReactJS-Part0】React源码解读
  • Brief introduction of how to 'Call, Apply and Bind'
  • ECMAScript6(0):ES6简明参考手册
  • Facebook AccountKit 接入的坑点
  • HTML中设置input等文本框为不可操作
  • Java多态
  • java架构面试锦集:开源框架+并发+数据结构+大企必备面试题
  • Linux快速复制或删除大量小文件
  • Vue2 SSR 的优化之旅
  • 关于List、List?、ListObject的区别
  • 浅谈Kotlin实战篇之自定义View图片圆角简单应用(一)
  • 微信开放平台全网发布【失败】的几点排查方法
  • 异步
  • 在Unity中实现一个简单的消息管理器
  • 2017年360最后一道编程题
  • 如何在招聘中考核.NET架构师
  • ​学习一下,什么是预包装食品?​
  • # .NET Framework中使用命名管道进行进程间通信
  • # 达梦数据库知识点
  • ## 基础知识
  • (C#)Windows Shell 外壳编程系列9 - QueryInfo 扩展提示
  • (javaweb)Http协议
  • (Matlab)使用竞争神经网络实现数据聚类
  • (WSI分类)WSI分类文献小综述 2024
  • (原創) 未来三学期想要修的课 (日記)
  • (最简单,详细,直接上手)uniapp/vue中英文多语言切换
  • .net core IResultFilter 的 OnResultExecuted和OnResultExecuting的区别
  • .NET Remoting学习笔记(三)信道
  • .NET Standard 支持的 .NET Framework 和 .NET Core
  • .NET 反射 Reflect
  • .net 简单实现MD5
  • .sh文件怎么运行_创建优化的Go镜像文件以及踩过的坑
  • .vimrc php,修改home目录下的.vimrc文件,vim配置php高亮显示
  • @RequestBody与@ModelAttribute
  • @RestController注解的使用
  • [ 攻防演练演示篇 ] 利用通达OA 文件上传漏洞上传webshell获取主机权限
  • [ 物联网 ]拟合模型解决传感器数据获取中数据与实际值的误差的补偿方法
  • [2024] 十大免费电脑数据恢复软件——轻松恢复电脑上已删除文件
  • [2669]2-2 Time类的定义
  • [BUUCTF]-Reverse:reverse3解析