zoukankan      html  css  js  c++  java
  • C++ 11: function & bind 使用示例

    #include <functional>
    
    #include <iostream>
    
     
    
    struct Foo {
    
        Foo(int num) : num_(num) {}
    
        void print_add(int i) const { std::cout << num_+i << '
    '; }
    
        int num_;
    
    };
    
     
    
    void print_num(int i)
    
    {
    
        std::cout << i << '
    ';
    
    }
    
     
    
    struct PrintNum {
    
        void operator()(int i) const
    
        {
    
            std::cout << i << '
    ';
    
        }
    
    };
    
     
    
    int main()
    
    {
    
        // store a free function
    
        std::function<void(int)> f_display = print_num;
    
        f_display(-9);
    
     
    
        // store a lambda
    
        std::function<void()> f_display_42 = []() { print_num(42); };
    
        f_display_42();
    
     
    
        // store the result of a call to std::bind
    
        std::function<void()> f_display_31337 = std::bind(print_num, 31337);
    
        f_display_31337();
    
     
    
        // store a call to a member function
    
        std::function<void(const Foo&, int)> f_add_display = &Foo::print_add;
    
        const Foo foo(314159);
    
        f_add_display(foo, 1);
    
     
    
        // store a call to a member function and object
    
        using std::placeholders::_1;
    
        std::function<void(int)> f_add_display2= std::bind( &Foo::print_add, foo, _1 );
    
        f_add_display2(2);
    
     
    
        // store a call to a function object
    
        std::function<void(int)> f_display_obj = PrintNum();
    
        f_display_obj(18);
    
    }
  • 相关阅读:
    redhat 5 中文乱码
    生成树
    交换机端口模式
    链路聚合
    AP注册
    信息收集
    Python 25 Django跨域请求
    Python 24 Django之csrf中间件
    Python 23 Django基础
    Python 21 Flask(三)第三方组件
  • 原文地址:https://www.cnblogs.com/qinfengxiaoyue/p/3713352.html
Copyright © 2011-2022 走看看