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循环相关推荐

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

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

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

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

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

    C++11 引入了基于范围的迭代写法,能够写出简洁的循环语句: 最常用的std::vector 遍历如前段代码: 新的写法如后段代码: #include <iostream> #inclu ...

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

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

  5. C ++ 11基于反向范围的for循环

    本文翻译自:C++11 reverse range-based for-loop Is there a container adapter that would reverse the directi ...

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

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

  7. 【C++基础】auto关键字(C++11)(auto的使用细则;auto不能推导的场景;auto的使用场景;基于范围的for循环)

    九.auto关键字 9.1 auto简介 在早期C/C++(C++98)中auto的含义是:使用auto修饰的变量,是具有自动存储器的局部变量,但遗憾的是一直没有人去使用它.因为在函数内定义的变量默认 ...

  8. C++11 —— 基于区间(range)的 for 循环

    The range-based for statement 0. <algorithm> 中的 for_each for_each 的第三个参数接受一个函数对象: void do_cout ...

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

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

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

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

最新文章

  1. Linux工具之curl与wget高级使用
  2. spring+mybatis+springmvc项目配置
  3. 三国志战略版鸿蒙梦魇,三国志战略版:双控在手天下我有,洞察震慑枪已成吴国梦魇!...
  4. arthas使用示例:profiler火焰图(CPU)
  5. mysql中case when then 的使用
  6. 跟多导出数据库的方法
  7. .NET异常设计原则
  8. python watchdog_Python watchdog
  9. 使用OData协议查询Windows日志
  10. 深度学习——NMS(非极大抑制)
  11. [转载] 杜拉拉升职记——34 设定工作目标要符合“SMART”原则
  12. cypress离线安装_【拆一个高端货】 美国NI公司 GPIB-USB转接卡 长标题
  13. linux搭建phantomjs+webdriver+testng+ant自动化工程
  14. 2019语言与智能技术竞赛
  15. @param注解什么意思_你对Java注解真的理解吗?
  16. 第68天-内网安全-域横向 PTHPTKPTT 哈希票据传
  17. 无缘无故的推荐弹窗,wps的锅,解决办法
  18. 从招聘信息看-数据分析师(数据分析报告)
  19. Mysql 安装PMM监控 (一台主机安装)
  20. 把牌分成两堆,让每堆面朝上的牌数目相同

热门文章

  1. Scala进阶之路-进程控制之执行shell脚本
  2. C++中的config设计
  3. SLF4J: Failed to load class “org.slf4j.impl.StaticLoggerBinder”
  4. [js高手之路]深入浅出webpack教程系列3-配置文件webpack.config.js详解(下)
  5. 函数响应式编程及ReactiveObjC学习笔记 (三)
  6. k进制正整数的对k-1取余与按位取余
  7. 设计模式之Prototype(原型)
  8. import 导入模块学习
  9. linux jdk安装
  10. content=IE=edge,chrome=1的meta标签内容