深入理解C++11【4】

深入理解C++11【4】

1、基于范围的 for 循环

  C++98 中需要告诉编译器循环体界面范围。如for,或stl 中的for_each:

int main()
{
    int arr[ 5] = { 1, 2, 3, 4, 5};
    int * p;
    for (p = arr; p < arr + sizeof( arr)/ sizeof( arr[ 0]); ++ p){
        *p *= 2;
    } 

    for (p = arr; p < arr + sizeof( arr)/ sizeof( arr[ 0]); ++ p){
        cout << *p << ‘\t‘;
    }
} 

int action1( int & e){ e *= 2; }
int action2( int & e){ cout << e << ‘\t‘; } 

int main() {
    int arr[ 5] = { 1, 2, 3, 4, 5};
    for_ each( arr, arr + sizeof( arr)/ sizeof( arr[ 0]), action1);
    for_ each( arr, arr + sizeof( arr)/ sizeof( arr[ 0]), action2);
}

  由 程序员 来说 明 循环 的 范围是 多余 的, 也是 容易 犯错误 的。 而 C++ 11 也 引入 了 基于 范围 的 for 循环, 就可以 很好 地 解决 了 这个 问题。

2、

3、

4、

5、

原文地址:https://www.cnblogs.com/tekkaman/p/10238362.html

时间: 2024-10-12 15:50:45

深入理解C++11【4】的相关文章

C++ 11新特性解析——《深入理解C++ 11:C++11新特性解析和应用》读书笔记

因为偶然的机会,在图书馆看到<深入理解C++ 11:C++11新特性解析和应用>这本书,大致扫下,受益匪浅,就果断借出来,对于其中的部分内容进行详读并亲自编程测试相关代码,也就有了整理写出这篇读书笔记的基础.C++作为踏入编程的最初语言,一直充满感情,而C++11作为新标准虽然推出一段时间了,却因为总总原因直到现在才去开始真正了解,不过一句话回荡在脑中:当你认为为时已晚的时候,恰恰是最早的时候!从C++98到C++11, C++11标准经历了10几年的沉淀,以全新的姿态迎接新的挑战,长话短说,

C++11变长模板解析(深入理解C++11)

参考自:深入理解C++11 变长模版: 变长函数和变长的模版参数 变长函数: double sum(int n, ...)//求n个double数据之和 { double sum = 0; va_list args;//接受输入数据的数据结构,需声明stdarg.h, va_start(args, n); //初始化数据 while (n>0) { sum += va_arg(args, double); //将args中的数据一一取出,每隔sizeof(double)取一次数,再求和 --n;

深入理解C++11【2】

[深入理解C++11[2]] 1.继承构造函数. 当基类拥有多个构造函数的时候,子类不得不一一实现. C++98 可以使用 using 来使用基类的成员函数. #include < iostream> using namespace std; struct Base { void f( double i){ cout << "Base:" << i << endl; } }; struct Derived : Base { using B

《深入理解C++11》要点总结

3.1 继承构造函数 通过using关键字可以继承父类的构造函数.也可以通过显式定义构造函数来阻止继承. 3.2 委派构造函数,减少构造函数的书写 class Info { public: Info() { InitReset(); } Info(int i) : Info() { type = i; } //通过调用无参构造函数,可以减少构造函数内容的重写 Info(char e) : Info() { name = e; } //委派构造函数和初始化列表不能同时存在,使用委派构造函数后,初始

Netruon 理解(11):使用 NAT 将 Linux network namespace 连接外网

学习 Neutron 系列文章: (1)Neutron 所实现的虚拟化网络 (2)Neutron OpenvSwitch + VLAN 虚拟网络 (3)Neutron OpenvSwitch + GRE/VxLAN 虚拟网络 (4)Neutron OVS OpenFlow 流表 和 L2 Population (5)Neutron DHCP Agent (6)Neutron L3 Agent (7)Neutron LBaas (8)Neutron Security Group (9)Neutro

[转][c++11]我理解的右值引用、移动语义和完美转发

c++中引入了右值引用和移动语义,可以避免无谓的复制,提高程序性能.有点难理解,于是花时间整理一下自己的理解. 左值.右值 C++中所有的值都必然属于左值.右值二者之一.左值是指表达式结束后依然存在的持久化对象,右值是指表达式结束时就不再存在的临时对象.所有的具名变量或者对象都是左值,而右值不具名.很难得到左值和右值的真正定义,但是有一个可以区分左值和右值的便捷方法:看能不能对表达式取地址,如果能,则为左值,否则为右值. 看见书上又将右值分为将亡值和纯右值.纯右值就是c++98标准中右值的概念,

802.11协议精读12:初探协议性能

序言 在初始的802.11协议版本之后,陆续更新的802.11e,以及802.11n以及更新的802.11技术,其都是基于改善当前802.11协议的缺陷不断进行改进的.为了理解这些改进,我们首先要理解802.11存在的一些问题,其中一个主要的问题就是性能问题. 本文我们先简单介绍802.11中一个常见问题,即路由器的宣称速率不等于实际速率的问题,然后我们具体分析一下这个宣称速率(即物理层速率)的计算方法.在后面一篇文章中,我们会介绍用数学方法对该吞吐量具体进行估计的方法,即Bianchi模型.

Internet Explorer 11 Enterprise Mode 详解

白驹过隙,已经三月未能及时更新博文,今天为大家分享有关IE 11 Enterprise Mode(企业模式)两个章节内容,之前看到好多群里讨论有关IE11企业模式的问题,这里简单做一下汇总,第一章为IE11企业模式详解,第二章为企业模式排错,希望对大家理解IE 11 Enterprise Mode的含义及企业批量开启及排错有帮助,谢谢. 一.IE 11企业模式简介: 企业模式是可以在 Windows 8.1 更新和 Windows 7 设备的 Internet Explorer 11 上运行的一

【浅墨Unity3D Shader编程】之十 深入理解Unity5中的Standard Shader(二)&amp;屏幕油画特效的实现

本系列文章由@浅墨_毛星云 出品,转载请注明出处.   文章链接:http://blog.csdn.net/poem_qianmo/article/details/49719247 作者:毛星云(浅墨)    微博:http://weibo.com/u/1723155442 本文工程使用的Unity3D版本: 5.2.1 概要:本文讲解了Unity中着色器编译多样化的思路,并对Standard Shader中正向基础渲染通道的源码进行了分析,以及对屏幕油画特效进行了实现. 众所周知,Unity官