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);
    
    }
  • 相关阅读:
    NOIP simulation
    NOIP2013
    BZOJ 4176 Lucas的数论
    BZOJ 3512 DZY Loves Math IV
    BZOJ 3994 Sum
    BZOJ 4174 tty的求助
    BZOJ 3561 DZY Loves Math VI
    BZOJ 2508 简单题/BZOJ 3775 点和直线
    FTR #1 百步穿杨
    BZOJ 4407 于神之怒加强版
  • 原文地址:https://www.cnblogs.com/qinfengxiaoyue/p/3713352.html
Copyright © 2011-2022 走看看