c++11 tuple

c++11新增了tuple类型,它可以容纳不定数量的类型变量,像一个更加易用的简化版struct。 tuple不是寻常的容器,它不能用迭代器去遍历。get的值需要编译期就确定,因此也不能用index下标变量去遍历: 虽然不能用一般的方式的遍历tuple,但可以用不定参数的模板在编译期去递归获取每个参数。一下是个例子来打印tuple的值。 tuple里面的类型可以是引用类型。 使用tie,可以方便的从tuple中提取出值来: 还可以用std::ignore忽略提取某些值: 第一次看到tie的时候觉得很神奇,为么tie能够的提取tuple中的值呢?答案很简单,tie根据参数建立了一个临时的参数引用类型tuple,然后重载了=操作,再利用不定参数模板来遍历另一个tuple中的值。 ... Read More | Share it now!

c++11 Lambda表达式

c++11引入了Lambda表达式,用于定义并创建匿名的函数对象,以简化编程工作。 最简单的Lambda表达式如这样: 也可以在定义的时候直接调用: 或者把它传递给一个变量,再调用,可以多次调用: 完整的lambda表示格式如下: 中括号里是指明要捕获的外部作用域的变量。 小括号是传递给lambda表达式的参数。 mutable修饰符,可以修改按值传递进来的拷贝(注意是能修改拷贝,而不是值本身)。 exception声明用于指定函数抛出的异常,如抛出整数类型的异常,可以使用throw(int)。 ->返回值类型,标识函数返回值的类型,当返回值为void,或者函数体中只有一处return的地方(此时编译器可以自动推断出返回值类型)时,这部分可以省略。 大括号就是函数体了。 捕获参数 lambda表达式中括号是用来捕获外部作用域的变量的: [],不捕获任何外部作用域变量。 ,按值传递的方式捕获所有外部作用域的变量。 ,按引用传递的方式捕获所有外部作用域的变量。 ,个别的指明值的捕获方式。 ,y按引用传递,其他按值传递。 ,y按值传递,其他按引用传递。 mutable修饰符可以对值传递的变量进行修改,并保存状态: lambda的类型,是个匿名的函数对象。每个lambda表达式的类型都是独一无二的。但可用std::function<>模版接受一个一般化的lambda:   ... Read More | Share it now!

c++11语言新特性

template表达式内的空格 在两个template表达式的闭符之间放一个空格的要求已经过时了,以下两种写法都正确。 nullptr和std::nullptr_t c++11鼓励使用nullptr来取代0或者NULL来表示空指针。这个特性可以避免把一个空指针解释成一个整形值,比如: nullptr是个新关键字。它被自动转换为各种pointer类型,但不会转换为整形值。它是std::nullptr_t类型。 auto类型 c++11允许你声明一个变量而不需要指明它的类型,只需要说它是auto类型。然后它的类型会根据其初值自动推导出来。这意味这auto类型变量就需要马上初始化。 auto变量自动推导类型,大大简化了我们的编程工作。 一致性初始化与初值列 c++有多种初始化变量的方法,比如大括号,赋值操作符,小括号。为此c++11引入一个一致性初始化的概念,任何类型都可以用大括号来初始化。 空的初始列会别初始化为0或者nullptr,比如: 用大括号初始化值不能窄化。 c++标准库提供了一个std::initializer_list来支持一系列值进行初始化。 for循环 c++... Read More | Share it now!

把你的英语用起来 读书笔记

英文学习的根本在于input输入,缺乏输入就不能学好任何一门外语。 英文学习如果不能一鼓作气,不如彻底放弃。 语法是非常重要的,没有语法,你不可能读懂各种长句子和结构复杂的句子,继而就无法写成具有层次感的长句子,还会对自己的阅读理解和写作能力造成障碍。 当你下定决心做某件事情的时候,最好只让自己一个人知道。 记录下自己的学习流程,跟踪自己的坚持。 列计划时绝对不要自我期望过高。 养成立即行动的习惯。 攻克英文发音 赖世雄美语音标 ESLPOD Paul... Read More | Share it now!

如何阅读一本书

曾经在很多个场合听说这本书,很多人称赞这本书,我也觉得这本书会给我带来很大的帮助。于是把这本书记在自己的书单里,准备有时间了好好学习学习。 几周前特意去图书馆借了这本书。刚拿到这本书的时候有些惊讶,原来这本书有这么厚啊,将近400页。我首先就产生了怀疑:这种讲解显而易见的技巧性书籍需要写这么厚吗,难道十几页几十页就不能阐述清楚? 接下来看书的过程发现这本书及其拖沓啰嗦,慢慢的耗尽了我的耐心。我从前几十页提炼出最重要的部分,你在阅读时要提出问题来——在阅读的过程中,你自己必须尝试去回答的问题: 整体来说,这本书到底在谈些什么?你一定要想办法找出这本书的主题,作者如何依次发展这个主题,如何逐步从核心主题分解出从属的关键议题来。 作者细说了什么,怎么说的?你一定要想办法找出主要的想法、声明与论点。这些组合成作者想要传达的特殊讯息... Read More | Share it now!