C++11之基于范围的for循环
采用c++11
新特性中的基于范围for
循环,不必去操心数组越界(边界)问题,因此非常的方便,特别是在项目开发中。
语法形式:
for(declaration:expression)
{statement
}
其中:
expression
部分表示一个对象,用于表示一个序列。
declaration
部分负责定义一个变量,该变量将被用于访问序列中的基础元素。
每次迭代,declaration
部分的变量会被初始化为expression
部分的下一个
元素值。
示例1:
#include<iostream>
#include<stdlib.h>
#include<string>
using namespace std;
int main()
{int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };for (auto val : arr){cout << val << " ";}system("pause");return 0;
}输出结果:
1 2 3 4 5 6 7 8 9 10
示例2:
若迭代器变量的值希望能够在for
中被修改,可以采用引用&
的方式;
#include<iostream>
#include<stdlib.h>
#include<string>
using namespace std;
int main()
{int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };for (auto &val : arr){if (val == 5){val += 1;}cout << val << " ";}system("pause");return 0;
}输出结果:
1 2 3 4 5 6 6 7 8 9 10
示例3:
对于STL标准模板库
也同样适用。
#include<iostream>
#include<stdlib.h>
#include<string>
#include<vector>
using namespace std;
int main()
{vector<int> arr;arr.push_back(1);arr.push_back(3);arr.push_back(5);arr.push_back(7);arr.push_back(9);for (auto &val : arr){cout << val << " ";}system("pause");return 0;
}输出结果:
1 3 5 7 9
示例4.
#include<iostream>
#include<stdlib.h>
#include<string>
#include<map>
using namespace std;
int main()
{map<int, string> arr;arr.insert(pair<int, string>(1, "hello"));arr.insert(pair<int, string>(2, "world."));for (auto &val : arr){cout << val.first << "," << val.second << endl;}system("pause");return 0;
}输出结果:
1,hello
2,world.
在编写的c++程序中,如果是窗口,有时会一闪就消失了,如果不想让其消失,在程序中添加:
system("pause");
注意:不要再return 的语句之后加,那样就执行不到了。
2.基于范围的for循环特点
(1)和普通循环一样,也可以采用continue跳出循环的本次迭代。
(2)用break来终止整个循环
3.基于范围的for循环使用的要求及依赖条件
(1)for循环迭代的范围是可以确定的;如数组的第一个元素和最后一个元素便构成了for选好的迭代范围。
(2)对于用户自定义的类,若类中定义便实现的有begin、end函数,则这个begin、end便是for循环的迭代范围。
(3)基于范围的for循环要求迭代器的对象实现:++ ==等操作符。
(4)对于STL标准模板库中(如:vector,set,list,map,queue,deque,string等)的各种容器使用“基于范围的for循环”是不会有
任何问题的,因为这些容器中都定义了相关操作。
C++11之基于范围的for循环相关推荐
- C++起始(内联函数,宏的优缺点,const关键字,auto关键字(C++11)基于范围的for循环(C++11). 指针空值nullptr(C++11))
内联函数 概念 以inline修饰的函数叫做内联函数,编译时C++编译器会在调用内联函数的地方展开,没有函数压栈的开销, 内联函数提升程序运行的效率 函数前增加inline关键字将其改成内联函数,在编 ...
- [C++11]基于范围的for循环
C++11提供了一种新型的for循环形式 - 基于范围的for循环 语法: for (declaration : expression) {//循环体 } 在上面的语法格式中,declaration表 ...
- 2-6:C++快速入门之内联函数,auto关键字,C++11基于范围的for循环和nullptr
文章目录 一:内联函数 (1)宏函数的缺陷 (2)内联函数的概念 (3)内联函数的特性 二:auto关键字(C++11) (1)auto简介 (2)auto使用注意事项 三:基于范围的for循环(C+ ...
- 【C++基础】auto关键字(C++11)(auto的使用细则;auto不能推导的场景;auto的使用场景;基于范围的for循环)
九.auto关键字 9.1 auto简介 在早期C/C++(C++98)中auto的含义是:使用auto修饰的变量,是具有自动存储器的局部变量,但遗憾的是一直没有人去使用它.因为在函数内定义的变量默认 ...
- mysql matlab for循环嵌套循环语句吗_C++: for_each 和 基于范围的for循环
普通的for循环 for_each函数模板 基于范围的for循环 普通用的像: for(int i = 0; i 这种的for循环就不说了, 下面主要说一下后两个,做个笔记. 以后用for循环可以考虑 ...
- C++中基于范围的for循环
程序的基本结构包括三种:顺序结构,选择结构(也称分支结构)和循环结构(也称 程序的基本控制结构包括三种:顺序结构.选择结 重复结构).循环结构的实现方法比较多,除了使用 while(). do whi ...
- 基于范围的for循环
基于范围的for循环是C++11新特性,可以用它来很方便的遍历整个数组/容器 auto自动类型推断:用于从初始化表达式中推断出变量的数据类型,通过auto的自动类型推断,可以大大简化编程工作 具体看例 ...
- 基于注意力机制的循环神经网络对 金融时间序列的应用 学习记录
摘要: 概况论文内容,包含解决的问题,解决的方法,成果 金融时间序列由于高噪声性以及序列间的相关性,导致传统模型的预测精度和泛化能力往往较低.为了克服这一问题,提出一种基于注意力机制的循环神经网络预测 ...
- 《中国人工智能学会通讯》——11.52 基于直推式学习的异质人脸图像 合成
11.52 基于直推式学习的异质人脸图像 合成 前面介绍的方法都是基于归纳式学习(InductiveLearning) 的,这些方法取得了不错的效果,但是它们也使得测试样本风险误差增加,进而可能影响合 ...
最新文章
- Zookeeper之启动常见错误及解决方法
- python一箭穿心代码怎样复制,Python Decimal copy_sign()用法及代码示例
- 1968. [AHOI2005]约数研究【数论】
- CodeForces - 2B The least round way
- windows分辨率修改工具_Windows 字体优化,这几个办法能帮你解决
- TOUGHRADIUS 项目介绍
- .NET托管内存类应用的内存泄漏分析和诊断(转)
- hadoop源码_HBASE源码导入IDEA并开启DEBUG调试
- 安徽工程大学大学计算机基础,安徽工程大学.pdf
- 合理使用Blob/Clob
- vb6 由于超出容量限制 不能创建新事务_Executors类创建四种常见线程池
- Golang里的Future/Promise
- 金庸年度双十佳广告爆笑版 (1)
- vue.js官方中文文档
- Authentication—身份验证流程
- 孩子成长-跟同学相处
- 关于PHP中如何跟踪报错的手段
- 计算机的录像功能在哪里找,电脑录像功能在哪
- 电脑开机后黑屏的解决办法
- 南京航空航天大学计算机考研经验贴
热门文章
- ActiveMQ—安装配置及使用
- windows下如何在一台机器上安装两个MYSQL数据库
- Usage and Idioms——Categories
- Android WebView使用与JavaScript使用
- html5小趣味知识点系列(一)autofocus
- 【转】Winform输入法控制
- hdu 1561 The more, The Better_树状dp
- [zt]petshop4.0 详解之八(PetShop表示层设计)
- linux ls没有反应_Linux入门②“命令格式”
- jwt 私钥_一分钟带你了解JWT认证