C++:基于范围的for循环
例子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循环相关推荐
- C++11之基于范围的for循环
采用c++11新特性中的基于范围for循环,不必去操心数组越界(边界)问题,因此非常的方便,特别是在项目开发中. 语法形式: for(declaration:expression) {statemen ...
- 从LSTM到GRU基于门控的循环神经网络总结
1.概述 为了改善基本RNN的长期依赖问题,一种方法是引入门控机制来控制信息的累积速度,包括有选择性地加入新的信息,并有选择性遗忘之前累积的信息.下面主要介绍两种基于门控的循环神经网络:长短时记忆网络 ...
- mysql matlab for循环嵌套循环语句吗_C++: for_each 和 基于范围的for循环
普通的for循环 for_each函数模板 基于范围的for循环 普通用的像: for(int i = 0; i 这种的for循环就不说了, 下面主要说一下后两个,做个笔记. 以后用for循环可以考虑 ...
- C++中基于范围的for循环
程序的基本结构包括三种:顺序结构,选择结构(也称分支结构)和循环结构(也称 程序的基本控制结构包括三种:顺序结构.选择结 重复结构).循环结构的实现方法比较多,除了使用 while(). do whi ...
- [C++11]基于范围的for循环
C++11提供了一种新型的for循环形式 - 基于范围的for循环 语法: for (declaration : expression) {//循环体 } 在上面的语法格式中,declaration表 ...
- C++起始(内联函数,宏的优缺点,const关键字,auto关键字(C++11)基于范围的for循环(C++11). 指针空值nullptr(C++11))
内联函数 概念 以inline修饰的函数叫做内联函数,编译时C++编译器会在调用内联函数的地方展开,没有函数压栈的开销, 内联函数提升程序运行的效率 函数前增加inline关键字将其改成内联函数,在编 ...
- 信号模型噪声服从零均值高斯分布_非高斯噪声下基于分数低阶循环谱的调制识别方法...
1 引言 当前,绝大多数非高斯噪声的建模形式都为Alpha稳定分布噪声.首先,Alpha稳定分布符合中心极限定理,在理论上适合应用于实际场景中的噪声建模:其次,Alpha稳定分布由于其参数的可变性,包 ...
- 2-6:C++快速入门之内联函数,auto关键字,C++11基于范围的for循环和nullptr
文章目录 一:内联函数 (1)宏函数的缺陷 (2)内联函数的概念 (3)内联函数的特性 二:auto关键字(C++11) (1)auto简介 (2)auto使用注意事项 三:基于范围的for循环(C+ ...
- 基于范围的for循环
基于范围的for循环是C++11新特性,可以用它来很方便的遍历整个数组/容器 auto自动类型推断:用于从初始化表达式中推断出变量的数据类型,通过auto的自动类型推断,可以大大简化编程工作 具体看例 ...
- 基于注意力机制的循环神经网络对 金融时间序列的应用 学习记录
摘要: 概况论文内容,包含解决的问题,解决的方法,成果 金融时间序列由于高噪声性以及序列间的相关性,导致传统模型的预测精度和泛化能力往往较低.为了克服这一问题,提出一种基于注意力机制的循环神经网络预测 ...
最新文章
- 正则表达式 - 语法
- 「机器学习速成」数据预处理,特征工程,良好特征的特点
- DPDK有关变量(二)
- pdf 中的java运行,java - 从pdf文件读取特定位置的itext在intellij中运行,并提供所需的输出,但是可执行jar抛出错误 - 堆栈内存溢出...
- 编写高质量可维护的代码:优雅命名
- 前端学习(2707):重读vue电商网站27之通过axios请求拦截器添加 token
- GDB 使用——Linux C编程
- Java技术回顾之JNDI--JNDI API
- 平安产险项目记录(二)
- 28和lba48命令格式区别_常用命令使用
- 安全认证框架之Shiro详解
- ECMAScript语法+关键字和保留字
- 目录_网易微专业C++系统工程师
- 【转】用生命之花制定自己的月计划
- 了解到的生二孩最好的理由
- val_loss先下降后上升或不下降只上升
- win10软件安装出现错误代码2503/2502,解决方案
- [人工智能-深度学习-59]:生成对抗网络GAN - 基本原理(图解、详解、通俗易懂)
- 茄子快传数据分析之原理分析及数据清洗
- Python中的scatter