例子1

先看个例子:

    int arr[10];for (int i = 0; i < 10; i++)//常规for循环,赋值{arr[i] = i;}for (auto a : arr)//范围for循环,遍历{cout << a << endl;;}

输出结果:

注意:循环中auto是让编译器自动判断类型,当然也可以将auto替换为int(这个例子中就是int类型)

因为arr数组有10个元素,所以该循环将迭代10次。第一次它迭代时,a变量将接受arr[0]中的值;在第二次循环迭代期间,它将接收arr[1]的值;在第三次循环迭代期间,它将接收arr[2]的值,等等。

假如需要在循环中对每个元素做修改操作,会怎样呢?

例子2

    int arr[10];for (int i = 0; i < 10; i++)//常规for循环,赋值{arr[i] = i;}cout << "开始第一次for循环" << endl;for (auto a : arr)//范围for循环,遍历{cout << a << endl;a = a * 2;//这里模拟修改操作}cout << "开始第二次for循环" << endl;for (auto a : arr){cout << a << endl;}

结果:

在循环中对元素进行了修改,可第二次循环输出发现元素并没有变化。。

想要修改元素,可以将范围变量声明为一个引用,如下

例子3

    int arr[10];for (int i = 0; i < 10; i++)//常规for循环,赋值{arr[i] = i;}cout << "开始第一次for循环" << endl;//=========就是这里============for (auto &a : arr)//范围for循环,遍历{cout << a << endl;a = a * 2;//这里模拟修改操作}cout << "开始第二次for循环" << endl;for (auto a : arr){cout << a << endl;}

再看结果

例子4

    string str("lovely");for (auto s : str){cout << s << endl;}

可以看到同样可以对字符串进行循环,但是这里每个元素的类型就不是string了,而是char,假如这里将auto换为string则会报错,可以换为char。

这个例子就能体现出使用auto的好处了。

例子5

最后贴一个力扣的题目,转换罗马数字的,使用了范围for循环

const pair<int, string> valueSymbols[] = {{1000, "M"},{900,  "CM"},{500,  "D"},{400,  "CD"},{100,  "C"},{90,   "XC"},{50,   "L"},{40,   "XL"},{10,   "X"},{9,    "IX"},{5,    "V"},{4,    "IV"},{1,    "I"},
};class Solution {
public:string intToRoman(int num) {string roman;for (const auto& value : valueSymbols) {while (num >= value.first) {num -= value.first;roman += value.second;}if (num == 0) {break;}}return roman;}
};

C++:基于范围的for循环相关推荐

  1. C++11之基于范围的for循环

    采用c++11新特性中的基于范围for循环,不必去操心数组越界(边界)问题,因此非常的方便,特别是在项目开发中. 语法形式: for(declaration:expression) {statemen ...

  2. 从LSTM到GRU基于门控的循环神经网络总结

    1.概述 为了改善基本RNN的长期依赖问题,一种方法是引入门控机制来控制信息的累积速度,包括有选择性地加入新的信息,并有选择性遗忘之前累积的信息.下面主要介绍两种基于门控的循环神经网络:长短时记忆网络 ...

  3. mysql matlab for循环嵌套循环语句吗_C++: for_each 和 基于范围的for循环

    普通的for循环 for_each函数模板 基于范围的for循环 普通用的像: for(int i = 0; i 这种的for循环就不说了, 下面主要说一下后两个,做个笔记. 以后用for循环可以考虑 ...

  4. C++中基于范围的for循环

    程序的基本结构包括三种:顺序结构,选择结构(也称分支结构)和循环结构(也称 程序的基本控制结构包括三种:顺序结构.选择结 重复结构).循环结构的实现方法比较多,除了使用 while(). do whi ...

  5. [C++11]基于范围的for循环

    C++11提供了一种新型的for循环形式 - 基于范围的for循环 语法: for (declaration : expression) {//循环体 } 在上面的语法格式中,declaration表 ...

  6. C++起始(内联函数,宏的优缺点,const关键字,auto关键字(C++11)基于范围的for循环(C++11). 指针空值nullptr(C++11))

    内联函数 概念 以inline修饰的函数叫做内联函数,编译时C++编译器会在调用内联函数的地方展开,没有函数压栈的开销, 内联函数提升程序运行的效率 函数前增加inline关键字将其改成内联函数,在编 ...

  7. 信号模型噪声服从零均值高斯分布_非高斯噪声下基于分数低阶循环谱的调制识别方法...

    1 引言 当前,绝大多数非高斯噪声的建模形式都为Alpha稳定分布噪声.首先,Alpha稳定分布符合中心极限定理,在理论上适合应用于实际场景中的噪声建模:其次,Alpha稳定分布由于其参数的可变性,包 ...

  8. 2-6:C++快速入门之内联函数,auto关键字,C++11基于范围的for循环和nullptr

    文章目录 一:内联函数 (1)宏函数的缺陷 (2)内联函数的概念 (3)内联函数的特性 二:auto关键字(C++11) (1)auto简介 (2)auto使用注意事项 三:基于范围的for循环(C+ ...

  9. 基于范围的for循环

    基于范围的for循环是C++11新特性,可以用它来很方便的遍历整个数组/容器 auto自动类型推断:用于从初始化表达式中推断出变量的数据类型,通过auto的自动类型推断,可以大大简化编程工作 具体看例 ...

  10. 基于注意力机制的循环神经网络对 金融时间序列的应用 学习记录

    摘要: 概况论文内容,包含解决的问题,解决的方法,成果 金融时间序列由于高噪声性以及序列间的相关性,导致传统模型的预测精度和泛化能力往往较低.为了克服这一问题,提出一种基于注意力机制的循环神经网络预测 ...

最新文章

  1. 正则表达式 - 语法
  2. 「机器学习速成」数据预处理,特征工程,良好特征的特点
  3. DPDK有关变量(二)
  4. pdf 中的java运行,java - 从pdf文件读取特定位置的itext在intellij中运行,并提供所需的输出,但是可执行jar抛出错误 - 堆栈内存溢出...
  5. 编写高质量可维护的代码:优雅命名
  6. 前端学习(2707):重读vue电商网站27之通过axios请求拦截器添加 token
  7. GDB 使用——Linux C编程
  8. Java技术回顾之JNDI--JNDI API
  9. 平安产险项目记录(二)
  10. 28和lba48命令格式区别_常用命令使用
  11. 安全认证框架之Shiro详解
  12. ECMAScript语法+关键字和保留字
  13. 目录_网易微专业C++系统工程师
  14. 【转】用生命之花制定自己的月计划
  15. 了解到的生二孩最好的理由
  16. val_loss先下降后上升或不下降只上升
  17. win10软件安装出现错误代码2503/2502,解决方案
  18. [人工智能-深度学习-59]:生成对抗网络GAN - 基本原理(图解、详解、通俗易懂)
  19. 茄子快传数据分析之原理分析及数据清洗
  20. Python中的scatter

热门文章

  1. Linux Tomcat日志查看实用命令
  2. C#操作DataReader类
  3. macOS上,实现Wireshark手机抓包
  4. ReactJs和React Native的那些事
  5. Pl/SQL Developer 配置
  6. 《python cookbook》chapter 1
  7. AIX 文件操作和AIX 目录操作
  8. libevent book——event | Gaccob的博客
  9. 为项目选择合适的语言
  10. java获取linux下面所有线程,获取Linux中Java线程的线程ID