美文网首页
Lambda函数与表达式

Lambda函数与表达式

作者: wangdsh | 来源:发表于2018-01-13 12:45 被阅读0次

C++11 提供了对匿名函数的支持,称为 Lambda 函数(也叫 Lambda 表达式)。Lambda表达式完整的声明格式如下:

[capture list] (params list) mutable exception-> return type { function body }

各项具体含义如下:

  • capture list:捕获外部变量列表
  • params list:形参列表
  • mutable指示符:用来说用是否可以修改捕获的变量
  • exception:异常设定
  • return type:返回类型
  • function body:函数体

此外,还可以省略其中的某些成分来声明“不完整”的Lambda表达式,常见的有以下几种:

  • [capture list] (params list) -> return type {function body}
  • [capture list] (params list) {function body}
  • [capture list] {function body}

下面就举一个实例(文件名:lambda.cpp):

// g++ -std=c++11 lambda.cpp
#include <vector>
#include <iostream>
#include <algorithm>

using namespace std;

bool cmp(int, int);
void print_vector(vector<int> *); 

int main() {

    vector<int> a{3, 1, 2}; 
    vector<int> b(a);

    print_vector(&a);
    sort(a.begin(), a.end(), cmp);
    print_vector(&a);

    print_vector(&b);
    sort(b.begin(), b.end(), [](int a, int b)->bool{return a<b;}); // lambda表达式
    print_vector(&b);

    cout << "End." << endl;
}

bool cmp(int a, int b) {
    return a < b;
}

void print_vector(vector<int> *v) {
    // 使用迭代器遍历vector
    for (vector<int>::iterator it=v->begin(); it!=v->end(); it++) {
        cout << *it << " ";
    }   
    cout << endl;
}

编译运行及结果:

$ g++ -std=c++11 lambda.cpp
$ ./a.out
3 1 2 
1 2 3 
3 1 2 
1 2 3 
End.

参考:
c++函数 | 菜鸟教程
http://www.runoob.com/cplusplus/cpp-functions.html
C++ 11 Lambda表达式
https://www.cnblogs.com/DswCnblog/p/5629165.html

相关文章

  • Lambda表达式

    Lambda表达式与函数式接口紧密相关,函数式接口介绍 Lambda表达式的基本语法 Java Lambda表达式...

  • C++中的Lambda表达式

    1.Lambda函数与表达式 C++11提供了对匿名函数的支持,称为Lambda函数(也叫Lambda表达式)。L...

  • lambda表达式

    什么是lambda表达式 lambda表达式的本质 lambda表达式是一种匿名函数,匿名函数是函数定义不绑定到任...

  • lambda表达式与Kotlin高阶函数

    lambda表达式与Kotlin高阶函数 概念 lambda表达式,或者简称为lambda,本质上就是可以传递给其...

  • 第二章 Lambda表达式

    引入Lambda表达式后: 编写Lambda表达式的不同形式: Lambda表达式本身的类型:函数接口 函数接口 ...

  • C++ lambda表达式与函数对象

    C++ lambda表达式与函数对象 lambda表达式是C++11中引入的一项新技术,利用lambda表达式可以...

  • Python基础——匿名函数+作用域

    一、匿名函数:lambda 函数名 = lambda 参数: 表达式 1、有名函数 2、匿名函数lambda [ ...

  • python第21课练习—lambda表达式

    1、请使用lambda表达式将下边函数转化为匿名函数? lambda表达式lambda表达式,通常是在需要一个函数...

  • JDK1.8新增特性参考

    Lambda表达式 Stream函数式操作流元素集合 接口新增:默认方法与静态方法 方法引用,与Lambda表达式...

  • Java lambda表达式学习文档 冲~

    Java lambda表达式的基础知识包括:lambda表达式的定义、lambda与匱名内部类、变量捕获、函数式接...

网友评论

      本文标题:Lambda函数与表达式

      本文链接:https://www.haomeiwen.com/subject/rrdcoxtx.html