zoukankan      html  css  js  c++  java
  • 深入学习c++--lambda函数

    1. 简单使用

    #include <iostream>
    #include <functional>
    using namespace std;
    
    struct Print {
        void operator()(int a, int b, int c) const 
        {
            cout << "a " << a << " b " << b << " c " << c << endl;
        }
    };
    
    void printInfo(int a, int b, int c)
    {
        cout << "a " << a << " b " << b << " c " << c << endl;
    }
    
    template<typename T1, typename T2, typename T3>
    void templatePrint(T1 a, T2 b, T3 c)
    {
        cout << "a " << a << " b " << b << " c " << c << endl;
    }
    
    struct TemplatePrint {
        template<typename T1, typename T2, typename T3>
        void operator()(T1 a, T2 b, T3 c) const {
            cout << "a " << a << " b " << b << " c " << c << endl;
        }
    };
    
    template<typename Func>
    void printUserFunc(Func func, int a, int b, int c)
    {
        func(a, b, c);
    }
    
    int main()
    {
        Print printUserClass;
        TemplatePrint printUserTempClass;
        
        printInfo(1, 2, 3);
        templatePrint(11, 22, 33);
        printUserClass(111, 222, 333);
        printUserTempClass(1111, 2222, 3333);
        
        // lambda c++
        auto local = [](int a, int b, int c) {
            cout << "a " << a << " b " << b << " c " << c << endl;
        };
        local(123, 123, 123);
        
        printUserFunc(local, 121, 212, 313);
        
        //lambda c++
        printUserFunc([](int a, int b, int c) {
            cout << "a " << a << " b " << b << " c " << c << endl;
        }, 
        121, 212, 313);
        
        // 值拷贝 
        int a = 23, b = 34, c = 45;
         auto local2 = [a, b, c] () {
            cout << "a " << a << " b " << b << " c " << c << endl;
        };
        local2();
        
        //传引用
        auto local3 = [&] () {     // &:外部引用 和 =: 外部拷贝 
            cout << "a " << a << " b " << b << " c " << c << endl;
        };
        local3(); 
        
        
        return 0;
    }

  • 相关阅读:
    python_异常处理
    python_类与对象
    函数
    字符串(查找,替换,分割)
    容器类型的数据
    条件语句
    关于WinSock编程的多线程控制
    利用Delphi编写Socket通信程序
    SQL Server数据库开发的二十一条军规
    SQL Server中的日期格式化
  • 原文地址:https://www.cnblogs.com/douzujun/p/10805373.html
Copyright © 2011-2022 走看看