STD C ++ 11件の::バインド

撮影:https://www.jianshu.com/p/621fc81a1dc1
効果:
パッケージ呼び出し可能なエンティティ(関数ポインタ、ファンクター、ラムダ式)に、そのようなパッケージは、事前にバインドされたパラメータを機能させることができます。

使用例:

#include <iostream>
using namespace std;

void global_func(int a){//全局函数
    cout<<"call global_func:"<<a<<endl;
}

auto labmda = [](int a){cout<<"lambda:"<<a<<endl;};

class ClassA{
public:
    void member_func(int a){//类成员函数
        cout<<"call ClassA::member_func:"<<a<<endl;
    }
    
    static void static_member_func(int a){//类静态函数
        cout<<"call ClassA::static_member_func:"<<a<<endl;
    }
};

class Functor{//仿函数
public:
    void operator()(int a){
        cout<<"call Functor()"<<a<<endl;
    }
};


int main(int argc, const char * argv[]) {
    function<void(int)> func;
    func = global_func;
    func(10);
    auto bindGlobalFunc = std::bind(global_func, 10);
    bindGlobalFunc();
    
    func = labmda;
    func(11);
    auto bindLabmdaFunc = std::bind(labmda, 11);
    bindLabmdaFunc();
    
    Functor testFunctor;
    func = testFunctor;
    func(12);
    auto bindFunctorFunc = std::bind(testFunctor, 12);
    bindFunctorFunc();
    
    ClassA a_object;
    func = std::bind(&ClassA::member_func, &a_object, std::placeholders::_1);
    func(13);
    auto bindClassMemberFunc = std::bind(&ClassA::member_func,&a_object, 13);
    bindClassMemberFunc();
    
    func = std::bind(&ClassA::static_member_func, std::placeholders::_1);
    func(14);
    auto bindClassStaticFunc = std::bind(&ClassA::static_member_func, 14);
    bindClassStaticFunc();
    return 0;
}

出力:

call global_func:10
call global_func:10
lambda:11
lambda:11
call Functor()12
call Functor()12
call ClassA::member_func:13,
call ClassA::member_func:13
call ClassA::static_member_func:14
call ClassA::static_member_func:14

注意事項:

パラメータの形式で値を予め結合によって渡される
パラメータを使用STDに予め結合されていない:: _1の先頭からの質量の形のプレースホルダ(プレースホルダ)は、昇順に、フォームで参照によって渡さ

std ::バインド戻り値が呼び出し可能なエンティティが直接はstdに割り当てることができている::機能

参照型のパラメータをバインドポインタの場合、呼び出し側は、呼び出す前に、そこでの生活サイクルのことを確認する必要があります

std ::プレースホルダは、いくつかのパラメータと一致するの本来の機能のいくつかのパラメータの新しい呼び出し可能オブジェクトを表します

公開された21元の記事 ウォンの賞賛0 ビュー9502

おすすめ

転載: blog.csdn.net/qq_40230900/article/details/87091910