使用auto标明一个变量,这个变量永远不会是引用变量。

使用auto&标明一个变量,这个变量有可能被编译器推导为引用变量。

#include <iostream>
#include<vector>
#include <time.h>
using namespace std;
class A
{
public:A(){year = 0;for (int i = 0;i < 5;i++){intVec.push_back(i);}}void show(){for (auto i : intVec){cout <<" "<< i << " ";}cout << endl;}vector<int>& getIntVec(){return intVec;}int& getYear(){return year;}void showYear(){cout << "year: "<< year << endl;}
private:vector<int> intVec;int year;
};
class Test
{
public://是否改变原来的值?void test1(){A objA;auto intVec = objA.getIntVec();intVec[0] = 111;objA.show();auto& intVec2 = objA.getIntVec();intVec2[1] = 222;objA.show();auto year = objA.getYear();year = 666;objA.showYear();}//效率上的区别void test2(){vector<int> data(11111111);time_t t1, t2, t3;t1 = time(NULL);for (int i = 0;i < 100;i++){auto testData = data;}t2 = time(NULL);for (int i = 0;i < 100;i++){auto& testData = data;}t3 = time(NULL);cout << "auto消耗:" << difftime(t2, t1) << endl;cout << "auto&消耗:" << difftime(t3, t2) << endl;}
};
int main()
{Test test;//这里打开注释可以选择运行哪一个测试案例//test.test1();//test.test2();
}

面试知识点:

初始化值的声明?

对于auto而言,其在于type deduce,它不会允许没有初始化值的声明

auto y; // error

auto编码的好处?

auto可以节省很多字,尤其是容器的iterator

vector<int> vec;
vector<int>::iterator iter=vec.begin();
auto it=vec.begin();

第二种写法简介了很多

用于lambda表达式

auto closure = [](auto x, auto y) { return x * y;}

C++ 中auto与auto的区别 (详细)相关推荐

  1. C++中引用与指针的区别(详细介绍)

    转载:http://www.cnblogs.com/tracylee/archive/2012/12/04/2801519.html C++中的引用与指针的区别 指向不同类型的指针的区别在于指针类型可 ...

  2. stdmove 跟 左键引用 区别_C++ auto和decltype的区别

    通过<C++ auto>和<C++ decltype>两节的学习,相信大家已经掌握了 auto 和 decltype 的语法规则以及使用场景,这节我们将 auto 和 decl ...

  3. python中的return和print的区别_python中return和print的区别(详细)

    Huskiesir python最近正在研究.今天,我面临一个问题,那就是,返回和印刷的区别.双方都能输出结果.的区别是什么?闲话少说,看下面的例子.# Code1: def break_words( ...

  4. java中next()和nextline()用法区别(详细说明)

    java中next和nextline用法区别 一,方法说明 二,空格的情况(tab键相当于多个空个 1.测试代码 2.中间出现空格时 3.开头出现空格时 三,回车键的情况 分析:回车键的情况 四,常见 ...

  5. 史上最详细的mysql底层和explan type和type中index和all的区别

    背景: 前几天我朋友问我一个问题,mysql的explan(执行计划)中type的index和all是不是压根没有区别,而且还推了几个博主的链接给我,我看了之后感觉有些无奈,有些博主自己都没有太搞清楚 ...

  6. java里throws详细讲解,基于Java中throw和throws的区别(详解)

    系统自动抛出的异常 所有系统定义的编译和运行异常都可以由系统自动抛出,称为标准异常,并且 Java 强烈地要求应用程序进行完整的异常处理,给用户友好的提示,或者修正后使程序继续执行. 语句抛出的异常 ...

  7. hibernate中@Entity和@Table的区别

    Java Persistence API定义了一种定义,可以将常规的普通Java对象(有时被称作POJO)映射到数据库. 这些普通Java对象被称作Entity Bean. 除了是用Java Pers ...

  8. sklearn中的k_means和KMeans区别

    sklearn中的k_means和KMeans区别 1.KMeans的缺点 2.sklearn.KMeans参数 3.sklearn.KMeans属性 KMeans **: 1.k点中心个数的确定,很 ...

  9. Linux中线程和进程的区别

    Linux中线程和进程的区别 进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,它是系统进行资源分配和调度的一个独立单位.例如,用户运行自己的程序,系统就创建一个进程,并为它分配资源,包括 ...

最新文章

  1. 没有java home_【Java安装】必须有JAVA_HOME变量吗
  2. 中职学校的学生计算机基础较弱,中职学校计算机专业教学的现状分析及对策探究.doc...
  3. [云炬python3玩转机器学习笔记] 2-5机器学习相关的哲学思考
  4. [Android]你不知道的Android进程化(4)--进程通信AIDL框架
  5. WAR文件与具有嵌入式服务器的Java应用程序
  6. jQuery选择器之id选择器
  7. java注解_Java注解
  8. samba访问其他服务器文件权限设置
  9. 中的工程图怎样才能做成正规图纸_新一代一拖二口罩机图纸详细设计三维模型带工程图...
  10. Ciri智能语音系统
  11. 淘宝商品详情,1688商品详情滑块的解决方法和接口
  12. Android项目实战--【谁是歌手-逻辑实现篇】
  13. CVPR2020论文分方向整理之检测篇_3D目标检测(代码/论文解读/136篇打包下载)
  14. ava中volatile关键字
  15. 服务器c盘有个inetpub文件夹,Win10正式版C盘inetpub文件夹可以删除吗 Win10正式版C盘inetpub文件夹删不掉怎么办...
  16. STM32CubeMX下载和使用
  17. 《蝴蝶效应1》——电影简记
  18. 带你快速入门MSK(一)
  19. 【C++】反向迭代器--迭代器适配器
  20. 电子面单api接口_JAVA调用示例

热门文章

  1. 《Linux设备驱动开发详解》虚拟机及案例代码下载
  2. python3 urlparse_Python3的URL解析库urlparse
  3. Android 9.0 Adaptive Icon 圆形图标剪切不全问题(上下左右部分被裁减)
  4. 2021机器人编程大赛初赛
  5. windows下GPU增强终端模拟器alacritty相关配置
  6. 安卓毕业设计app项目-基于Uniapp+SSM实现的日常饮食美食菜谱管理
  7. 爬取点评成都数据,只为告诉你哪家火锅最好吃
  8. 一条蠕虫长 1 寸,在一口深为 N 寸的井的底部。已知蠕虫每 1 分钟可以向上爬 U 寸,但 必须休息 1 分钟才能接着往上爬。在休息的过程中,蠕虫又下滑了 D 寸。就这样,上爬和下滑 重复进行。请
  9. mysql 整型默认值,MySQL表字段设立默认值
  10. 太逆天了,10行Python代码实现目标检测!!