C++11新特性概述,初始化,auto、for、智能指针、哈希表等( 三 )


(3)mutable 。此关键字可以省略,如果使用则之前的 () 小括号将不能省略(参数个数可以为 0) 。默认情况下,对于以值传递方式引入的外部变量,不允许在 lambda 表达式内部修改它们的值(可以理解为这部分变量都是 const 常量) 。而如果想修改它们,就必须使用 mutable 关键字 。
(4)noexcept/throw() 。可以省略,如果使用,在之前的 () 小括号将不能省略(参数个数可以为 0) 。默认情况下,lambda 函数的函数体中可以抛出任何类型的异常 。标注 noexcept 关键字,则表示函数体内不会抛出任何异常;使用 throw() 可以指定 lambda 函数内部可以抛出的异常类型 。
(5)->返回类型 。匿名函数的返回类型 。如果 lambda 函数体内只有一个 return 语句,或者该函数返回 void,则编译器可以自行推断出返回值类型,此情况下可以直接省略"-> 返回值类型" 。
(6)与普通函数相同 。
#include <iostream>#include <algorithm>using namespace std;int main(){int num[4] = { 9,7,8,6 };//对 num数组中的元素进行排序sort(num, num + 4, [=](int x, int y) -> bool { return x < y; });for (int n : num) {cout << n << " ";}return 0;}运行结果:
 

C++11新特性概述,初始化,auto、for、智能指针、哈希表等

文章插图
 




推荐阅读