C++11基于范围的for循环
1 .基于范围的for循环
在c++98
中,若要访问一个数组中的数据元素,则需采用循环和下标的方式输出数组中的内容。
如:
#include<iostream>
#include<algorithm>
using namespace std;
int main(int argc,char argv)
{int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };//1.采用数组下标的方式for (auto i = 0; i < sizeof(arr) / sizeof(arr[0]); ++i){if (i % 10 == 0)cout << endl;cout << “arr[” << i << “]” << arr[i] << " ";}return 0;
}
1.1 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;
}
示例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;
}
示例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;
}
示例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;
}
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++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++11 基于范围的 for 循环
C++11 引入了基于范围的迭代写法,能够写出简洁的循环语句: 最常用的std::vector 遍历如前段代码: 新的写法如后段代码: #include <iostream> #inclu ...
- C++11之基于范围的for循环
采用c++11新特性中的基于范围for循环,不必去操心数组越界(边界)问题,因此非常的方便,特别是在项目开发中. 语法形式: for(declaration:expression) {statemen ...
- C ++ 11基于反向范围的for循环
本文翻译自:C++11 reverse range-based for-loop Is there a container adapter that would reverse the directi ...
- C++起始(内联函数,宏的优缺点,const关键字,auto关键字(C++11)基于范围的for循环(C++11). 指针空值nullptr(C++11))
内联函数 概念 以inline修饰的函数叫做内联函数,编译时C++编译器会在调用内联函数的地方展开,没有函数压栈的开销, 内联函数提升程序运行的效率 函数前增加inline关键字将其改成内联函数,在编 ...
- 【C++基础】auto关键字(C++11)(auto的使用细则;auto不能推导的场景;auto的使用场景;基于范围的for循环)
九.auto关键字 9.1 auto简介 在早期C/C++(C++98)中auto的含义是:使用auto修饰的变量,是具有自动存储器的局部变量,但遗憾的是一直没有人去使用它.因为在函数内定义的变量默认 ...
- C++11 —— 基于区间(range)的 for 循环
The range-based for statement 0. <algorithm> 中的 for_each for_each 的第三个参数接受一个函数对象: void do_cout ...
- mysql matlab for循环嵌套循环语句吗_C++: for_each 和 基于范围的for循环
普通的for循环 for_each函数模板 基于范围的for循环 普通用的像: for(int i = 0; i 这种的for循环就不说了, 下面主要说一下后两个,做个笔记. 以后用for循环可以考虑 ...
- C++中基于范围的for循环
程序的基本结构包括三种:顺序结构,选择结构(也称分支结构)和循环结构(也称 程序的基本控制结构包括三种:顺序结构.选择结 重复结构).循环结构的实现方法比较多,除了使用 while(). do whi ...
最新文章
- Linux工具之curl与wget高级使用
- spring+mybatis+springmvc项目配置
- 三国志战略版鸿蒙梦魇,三国志战略版:双控在手天下我有,洞察震慑枪已成吴国梦魇!...
- arthas使用示例:profiler火焰图(CPU)
- mysql中case when then 的使用
- 跟多导出数据库的方法
- .NET异常设计原则
- python watchdog_Python watchdog
- 使用OData协议查询Windows日志
- 深度学习——NMS(非极大抑制)
- [转载] 杜拉拉升职记——34 设定工作目标要符合“SMART”原则
- cypress离线安装_【拆一个高端货】 美国NI公司 GPIB-USB转接卡 长标题
- linux搭建phantomjs+webdriver+testng+ant自动化工程
- 2019语言与智能技术竞赛
- @param注解什么意思_你对Java注解真的理解吗?
- 第68天-内网安全-域横向 PTHPTKPTT 哈希票据传
- 无缘无故的推荐弹窗,wps的锅,解决办法
- 从招聘信息看-数据分析师(数据分析报告)
- Mysql 安装PMM监控 (一台主机安装)
- 把牌分成两堆,让每堆面朝上的牌数目相同
热门文章
- Scala进阶之路-进程控制之执行shell脚本
- C++中的config设计
- SLF4J: Failed to load class “org.slf4j.impl.StaticLoggerBinder”
- [js高手之路]深入浅出webpack教程系列3-配置文件webpack.config.js详解(下)
- 函数响应式编程及ReactiveObjC学习笔记 (三)
- k进制正整数的对k-1取余与按位取余
- 设计模式之Prototype(原型)
- import 导入模块学习
- linux jdk安装
- content=IE=edge,chrome=1的meta标签内容