• C++ 11 中的 Lambda 表达式的使用


    Lambda在C#中使用得非常频繁,并且可以使代码变得简洁,优雅.

    在C++11 中也加入了 Lambda. 它是这个样子的 [] () {}...  是的三种括号开会的节奏~ [] 的作用是表示Lambda的开始.并且告诉编译器.在这个表达式中要用哪种方式去访问同一作用域中的其它变量

    [=] : 表达以值传递的方式调用

    [&] : 表示以引用的方式调用

    [a,b,&c] : 表示a,b为值传, c为引用传递

    [=,&a] : 表示除了a为引用传,其它都为值传

    [&,a,b] : 表示为了a,b 为值传,其它都为引用传递

    [this] : 表示将类的this 指针传入了, 这样你就可以使用类的属性及方法在 Lambda中.

    () : 就是函数的参数列表

    {} : 函数的主体

     如果你的函数主体只有一句话的时候,Lambda会自动推断返回的类型,如果函数主的内容多的话,并且需要有返回值的情况的时候,你就需要手动的指定Lambda返回的类型:

    []()->int {} : 这是手动指定返回 int 类型.

    如果你想写一个函数,并且用一个Lambda表达式作为参数的话,你需要 #include <functional> 头文件,这里包括了模板函数的定义 相当于C# 中的 Action,Func 等~ 它的使用是这样的:

    std::function<int(int,int)> func :  这个是定义了一个 传入两个 Int 参数,并返回Int类型的函数

    std::function<void()> func : 表达的函数是没有传入参数,并且也没有返回值的类型的函数

     1 #include <iostream>
     2 #include <functional> // 相当于 C# Action , Func
     3 using namespace std;
     4 
     5 void MyFunc(int val,function<int(int)> func) {
     6     cout << func(val) << endl;
     7 }
     8 
     9 int main() {
    10     MyFunc(5,[](int x) {return x * x * x;});
    11     return 0;
    12 }
  • 相关阅读:
    AppBoxFuture(六): 前端组件化开发
    AppBoxFuture(五): 分布式文件存储-Store Everything
    Mysql自动填充测试数据
    萌新带你开车上p站(番外篇)
    B站百大UP主党妹被黑客勒索!!!
    合天网络靶场-大规模网络环境仿真服务平台
    XSS语义分析的阶段性总结(二)
    想学习CTF的一定要看这篇,让你学习效率提升80%
    XSS语义分析的阶段性总结(一)
    逆向入门分析实战(二)
  • 原文地址:https://www.cnblogs.com/easyfrog/p/3431020.html
Copyright © 2020-2023  润新知