前言
    C++11这次的更新带来了令很多C++程序员期待已久的for range循环,每次看到javascript, lua里的for range,心想要是C++能有多好,心里别提多酸了。这次C++11不负众望,再也不用羡慕别家人的for range了。

使用场景

ex1:遍历字符串

std::string str = "hello, world";
for(auto ch : str) {  std::cout << ch << std::endl;
}  

遍历str,输出每个字符,同时用上auto,简直是如虎添翼。

ex2:遍历数组

int arr[] = {1, 2, 3, 4};
for(auto i : arr) {  std::cout<< i << std::endl;
}

不用知道数组容器的大小,即可方便的遍历数组。

ex3:遍历stl 容器

std::vector<std::string> str_vec = {"i", "like",  "google"};
for(auto& it : str_vec) {  it = “c++”;
}  

在这段程序中,可以返回引用值,通过引用可以修改容器内容。然后用到了初始化列表,在下一篇文章中,将会介绍。

ex4:遍历stl map

std::map<int, std::string> hash_map = {{1, "c++"}, {2, "java"}, {3, "python"}};
for(auto it : hash_map) {  std::cout << it.first << "\t" << it.second << std::endl;
}  

遍历map返回的是pair变量,不是迭代器。

转载自:《C++11 之for 新解》

C++11系列学习之六-----for相关推荐

  1. C++11系列学习之七---------初始化列表

    一.前言 C++的学习中,我想每个人都被变量定义和申明折磨过,比如我在大学笔试过的几家公司,都考察了const和变量,类型的不同排列组合,让你区别有啥不同.反正在学习C++过程中已经被折磨惯了,今天再 ...

  2. C++11系列学习之四----auto

    在哪些情况下要申明类型: 定义变量类型 函数返回值,函数参数 表达式返回变量类型 auto关键字原理      在定义变量的时候必须申明类型,c++是强语言类型,在编译阶段需要知道类型,这样的好处是程 ...

  3. C++11系列学习之三----array/valarray

    创建数组,是程序设计中必不可少的一环.我们一般可以有以下几种方法来创建数组. 一.C++内置数组 数组大小固定,速度较快 通用格式是:数据类型   数组名[ 数组大小 ]; 如 int a[40];/ ...

  4. C++11系列学习之二-----lambda表达式

    C++11添加了一项名为lambda表达式的新功能,通过这项功能可以编写内嵌的匿名函数,而不必编写独立函数和函数对象,使得代码更容易理解. lambda表达式的语法如下所示: [capture_blo ...

  5. [E17264-15]Oracle® Database 2 Day + Real Application Clusters Guide 11g Release 2 (11.2)之六

    本文主要摘自于Oracle Database 2 Day + Real Application Clusters Guide 11g Release 2 (11.2) E17264-15,旨在总结和规 ...

  6. C++11系列学习之五-------decltype

    使用场景 在C++中经常要用到很长的变量名,如果已经有变量和你将使用的变量是一个类型,即可使用decltype关键字 来申明一样的类型变量. decltype原理      返回现有变量类型,decl ...

  7. Go 语言实战: 编写可维护 Go 语言代码建议

    Go 语言实战: 编写可维护 Go 语言代码建议 目录 1. 指导原则 1.1 简单性 1.2 可读性 1.3 生产力 2. 标识符 2.1 选择标识是为了清晰, 而不是简洁 2.2 标识符长度 2. ...

  8. 敏捷开发系列学习总结(11)——Scrum敏捷开发流程的三个角色、四个会议和三个物件

    Scrum敏捷开发流程主要包扩三个角色.四个会议和个三物件. 三个角色 Scrum团队中包括三个角色,他们分别是产品负责人.开发团队和 项目的直接管理者(Scrum Master). Scrum 团队 ...

  9. Lucene学习总结之六:Lucene打分公式的数学推导

     Lucene学习总结之六:Lucene打分公式的数学推导 在进行Lucene的搜索过程解析之前,有必要单独的一张把Lucene score公式的推导,各部分的意义阐述一下.因为Lucene的搜索 ...

最新文章

  1. 【DeepLearning】Exercise:Sparse Autoencoder
  2. 【经典算法必读】图片分类系列之(一): 你真的了解图片分类(Image Classification)吗?...
  3. iOS动态部署之RSA加密传输Patch补丁
  4. Docker镜像的目录存储讲解
  5. Makefile的写法
  6. Hibernate延时加载
  7. VS 2010 OpenGL 配置与实例开发
  8. ​什么问题最让程序员头秃?我们分析了11种语言的11000个问题
  9. 时间管理----分析工作安排和首要任务
  10. pcp pmda mysql_linux下的mysql的安装
  11. 大数据之-Hadoop之HDFS_HDFS_Shell命令---大数据之hadoop工作笔记0052
  12. ansible常用ad hoc操作
  13. 小米总参php面试题_小米2019年PHP工程师面试题和答案解析
  14. python turtle画小狗_python-turtle-画雪花
  15. linux 查看硬盘序列号
  16. 美通企业日报 | 今年中国私家车行驶里程同比大降18%;缤客发布2020年八大旅行趋势...
  17. 数据爬取-奇技淫巧系列1——抓取隐藏在CDN,防爬代理等服务后面的数据
  18. Vue+el-tree,元素拖拽时出现禁用图标, 请看解决办法
  19. JPA criteria 查询:类型安全与面向对象
  20. 简单的给数字加密解密

热门文章

  1. TCP/IP(三):IP协议相关技术
  2. arguments使用
  3. [scrum]2011/9/24-----第四天
  4. C#动态加载dll,dll目录指定
  5. jmeter(四十五)常用Beanshell脚本
  6. (2.15)备份与还原--使用作业备份、清理过期备份、清理历史记录、事务日志是否备份过...
  7. Shell编程之if语法练习(LNMP)全过程
  8. 天梯赛2016-L2
  9. 期货黄金与现货黄金比较
  10. 未能加载文件或程序集“Poderosa.Core