您的位置:首页 > 编程语言 > C语言/C++

C++11之lambda表达式

2015-09-17 00:42 316 查看
C++11中引入了lambda表达式,允许使用匿名函数。

其语法如下:



1 函数对象参数,必须,标志lambda表达式的开始,有三种参数可选:

a 空,不能使用lambda表达式所在作用域中的变量。

b =,可以使用lambda表达式所在作用域中的变量,值传递。

c &,使用lambda表达式所在作用域中的变量,引用传递。

2 函数参数列表,非必需,无参数时可省略,lambda表达式的参数列表,即匿名函数的参数列表。

3 mutable生命,可省略,函数对象值传递时加上mutable可以修改形参的值,默认不能修改。

4 异常抛出生命,可省略,throw中可以指定lambda表达式抛出的异常类型,如throw(int e)。

5 返回值类型,当然会值为void或者只有一个返回值(编译器可自动推导)时,可以省略。

6 函数体,必需,但可以为空,书写逻辑。

示例:

#include <iostream>

using namespace std;

int main() {
    auto res = [] (int x, int y) ->int {
        return x + y;
    }(1, 2); 
    cout << res << endl;

    auto x = 1;
    [] (int &x, int &y) -> void {
        auto tmp = x;
        x = y;
        y = tmp;
    }(res, x); 
    cout << res << "," << x << endl;

    [&] {
        res += 1;
    }(); 
    cout << res << endl;

    [=] () mutable -> void {
        res += 1;
    }(); 
    cout << res << endl;

    return 0;
}


结果如图:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: