zoukankan      html  css  js  c++  java
  • C++11 占位符placeholders和函数bind用法

    #include <iostream>
    #include <string>
    #include <functional>
    using namespace std;
    using namespace std::placeholders;
     
    void test(int i, double d, const string &s)
    {
        cout << "i= " << i << " d= " << d <<" s= " << s << endl;
    }
    int test1(int i, double d, const string &s)
    {
        cout << "i= " << i << " d= " << d <<" s= " << s << endl;
        return i;
    }
     
    int main(int argc, const char *argv[])
    {
        function<void( void )> fp;
        string s = "foo";
        int a = 3;
        double b = 6.7;
        fp = bind(&test, a, b, s);
        fp();
     
        function <void (int , const string&)> fp1;
        double b2 = 4.6;
        fp1 = bind(test, _1, b2, _2);
        fp1(4, "kity");
     
        function <int (int , const string&) > fp2;
        fp2 = bind<int>(test1, _1, b2, _2);
        int  y = fp2(4, "kity");
        cout << y << endl;
     
        auto fn = bind(test, 10, 23.3, "heko");//不用function指定函数参数,
        fn();
     
        auto ff = bind(test, _1, _3, _2);//bind中的i参数类型与test的_j的参数类型对应
        ff(12, "ppp", 12.5);
     
        class A
        {
            public:
                void print(int a, double x)
                {
                    cout << a << " " << x << endl;
                }
        };
        A a3;
        auto fclass= bind(&A::print, &a3, 11, 7.7);
        fclass();
        return 0;
    }


    参照 https://blog.csdn.net/aa838260772/article/details/39828207
  • 相关阅读:
    arm单板上移植gdb
    video on web
    chromium源码阅读
    CE-HTML简介
    multi-tap
    DPDK 网卡RSS(receive side scaling)简介
    c语言实现带LRU机制的哈希表
    Linux TCP协议使用的变量
    scp源码浅析
    Linux e1000e网卡驱动
  • 原文地址:https://www.cnblogs.com/xzlq/p/9505128.html
Copyright © 2011-2022 走看看