zoukankan      html  css  js  c++  java
  • c++ lamda

    Lamda表达式类似于匿名函数,在使用 c++ 的 STL 时往往会用到大量的函数对象,为此要编写很多函数对象类,有的函数对象类只用来定义了一个对象,而且这个对象也只使用了一次,编写这样的函数对象类就有点浪费。

    对于只使用一次的函数对象类,能否直接在使用它的地方定义呢?Lamda 表达式能够解决这个问题。

    Lamda表达式的定义:

    [要捕获的外部变量](参数列表)->返回值{语句块}

    [=](int x, int y)->bool{return x < y;}

     

    Lamda表达式的使用:

    []               什么也没有捕获
    [a, &b]      按值捕获a,按引用捕获b
    [&]            按引用捕获任何用到的外部变量
    [=]            按值捕获任何用到的外部变量
    [a, &]        按值捕获a, 其它的变量按引用捕获
    [&b, =]     按引用捕获b,其它的变量按值捕获
    [this]         按值捕获this指针

    // 示例
    int
    a[4] = { 0, 1, 2, 3}; sort(a, a + 4, [=](int x, int y)->bool{return x < y;}); int a = 0; int b = 1; auto func = [=](int c) { return a + b + c; } std::cout << func(2) << std::endl; // 输出 3
  • 相关阅读:
    Linux软件管理
    Linux计划任务与进程管理
    PHP学习 Day_04
    Linux网络管理
    单播组播的实现
    Linux 下的tmpfs文件系统(/dev/shm)
    11.Linux date命令的用法
    Luogu P3783 [SDOI2017]天才黑客
    Luogu P3768 简单的数学题
    Luogu P2336 [SCOI2012]喵星球上的点名
  • 原文地址:https://www.cnblogs.com/tongyishu/p/13446030.html
Copyright © 2011-2022 走看看