【IT168 专稿】C++0x是C++编程语言预计的新标准的一个非正式的名称,今后会替换现有的C++标准,其中的X也会有特定的值。新版本中添加了语言核心内容和扩展的C++标准库。本文重点介绍在Visual C++ 2010中C++0x的语言特性,包含Lambda表达式、auto 关键字、static_assert 声明、右值(Rvalue)引用。
Lambda 表达式
很多编程语言都支持不具名函数,Lambda 表达式就是一种与不具名函数相关的编程技术。那什么是不具名函数呢?不具名函数就是只有函数体、而没有函数名的一种函数,如下图标红部分。
在 for_each语句中,[](int n) { cout << n << " "; } 就是一个Lambda表达式,[] 操作符是 Lambda导引符, 它告诉编译器一个 Lambda表达式开始了; (int n) 是 Lambda参数声明,它告诉编译器不具名函数对象类的函数调用操作符带有哪些参数; { cout << n << " "; } 是复合声明 ,它是不具名函数对象类的函数调用操作符的函数体。不具名函数对象类的函数调用操作符默认返回 void 。
Lambda 表达式的特性分别是简洁高效、自动推断返回类型。
(1)简洁高效
下面代码实现循环遍历输出vector中的每一个数。
输出结果:
上面两组代码实现相同的效果,通过比较我们就可以发现,Lambda表达式的语法更加简洁,使用起来更加简单高效。