C++11 之for 新解 auto

 前言
    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[] = {, , , };
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 = {{, “c++”}, {, “java”}, {, “python”}};
for(auto it : hash_map) {
std::cout << it.first << “\t” << it.second << std::endl;
}

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

后记
     for range 很简单,但是为遍历容器提供了很大的便利,再也不用写那么长的for循环了。同时也印证我这边文章说的,C++是变的复杂了,但同时它变的更好了。它提供的特性你不用也没关系,但如果你一直在使用C++,或者作为合格的程序员,保持学习是亘古不变的。何不花一点时间学习一下C++新特性,不仅提高效率,并且使得自己的代码更加优美,何乐而不为呢?

C++11 之for 新解 auto的更多相关文章

  1. 【C++11】新特性——auto的使用

    [C++11]新特性——auto的使用 C++11中引入的auto主要有两种用途:自动类型推断和返回值占位.auto在C++98中的标识临时变量的语义,由于使用极少且多余,在C++11中已被删除.前后 ...

  2. C++ 11 Lambda表达式、auto、function、bind、final、override

    接触了cocos2dx 3.0,就必须得看C++ 11了.有分享过帖子:[转帖]漫话C++0x(四) —- function, bind和lambda.其实最后的Lambda没太怎么看懂. 看不懂没关 ...

  3. C++11新特性之三——auto

    C++11中引入的auto主要有两种用途:自动类型推断和返回值占位.auto在C++98中的标识临时变量的语义,由于使用极少且多余,在C++11中已被删除.前后两个标准的auto,完全是两个概念 1. ...

  4. C++11 之for 新解

     前言     C++11这次的更新带来了令非常多C++程序猿期待已久的for range循环,每次看到javascript. lua里的for range.心想要是C++能有多好,心里别提多酸了.这 ...

  5. 【C++11新特性】 auto关键字

    原文链接: http://blog.csdn.net/xiejingfa/article/details/50469045 熟悉脚本语言的人都知道,很多脚本语言都引入了“类型自动推断”技术:比如pyt ...

  6. C++11新特性之auto

    auto的使用  c++11引入了auto类型说明符,auto让编译器通过初始值来推算变量的类型,所以auto定义的变量必须有初始值.  使用auto也能在一条语句中声明多个变量,因为一条声明语句只能 ...

  7. c++11之三: sizeof运算符 auto的优势 __func__预定义标识符

    在C++11中,对非静态成员变量使用sizeof操作是合法的. auto推导的一个最大优势就是在拥有初始化表达式的复杂类型变量声明时简化代码.如:std:vector<std::string&g ...

  8. C++11新标准:auto关键字

    一.auto意义 编程时常常需要把表达式的值赋给变量,这就要求在声明变量的时候清楚地知道表达式的类型,然后要做到这一点并非那么容易.为了解决这个问题,C++11新标准引入了auto类型说明符,用它就能 ...

  9. C++ 11常见功能介绍:auto,decltype,nullptr,for,lambda

    什么是C++11 C++11是曾经被叫做C++0x,是对目前C++语言的扩展和修正,C++11不仅包含核心语言的新机能,而且扩展了C++的标准程序库(STL),并入了大部分的C++ Technical ...

随机推荐

  1. linux下启动tomcat服务的命令是什么

    Linux下tomcat服务的启动.关闭与错误跟踪,使用PuTTy远程连接到服务器以后,通常通过以下几种方式启动关闭tomcat服务:切换到tomcat主目录下的bin目录(cd usr/local/ ...

  2. 【性能压测】:MQ队列异步处理机制导致的系统无法接受请求的问题

    一,最近压测系统交易峰值时,因该支交易采用MQ异步队列处理机制:该增加积分的交易,前段服务器优先返回给客户增加积分成功的结果,后端的MQ队列服务器再慢慢处理该请求: 二,压测过程中出现的问题现象:前几 ...

  3. Bomb(要49)--数位dp

    Bomb Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/65536 K (Java/Others)Total Submi ...

  4. SpringMVC初写(四)上传和下载功能的实现

    一.文件上传 流程: 导入包commons-fileuplad组件和依赖包commons-io组件 配置springmvc支持上传的组件: 启动SpringMVC注解支持 配置上传解释器 构建一个上传 ...

  5. Mac 10.12安装图片切换工具ArcSoft Photo+

    说明:Mac自带的图片切换不能连续切换,这款工具和美图看看差不多. 下载: (链接: https://pan.baidu.com/s/1i5rLYzr 密码: 49dp)

  6. 重签名android测试包

    我的一个例子:jarsigner -digestalgSHA1 -sigalg MD5withRSA -keystore C:\Users\sunyang\.android\debug.keystor ...

  7. [中英对照]Why Redis beats Memcached for caching | 在cache化方面,为何Redis胜过Memcached?

    对Memcached和Redis有兴趣的同学不妨花几分钟读一读本文,否则请飘过. Why Redis beats Memcached for caching | 在cache化方面,为何Redis胜过 ...

  8. Datenstruktur und Algorithmus

    In der Informatik und Softwaretechnik ist eine Datenstruktur ein Objekt zur Speicherung und Organisa ...

  9. unity简易ui框架

    在unity项目开发中,ui模块的开发往往占据了很大一部分工作,部分游戏甚至绝大部分的工作都是在ui上,如何高效管理各种界面,这里分享一套高效易用的UI框架. 首先,我们定义一个PanelBase类, ...

  10. 移动端使用的WebKit私有属性(转)

    <!DOCTYPE HTML><html><head> <meta charset="utf-8"> <title>无标 ...