日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

std::function和std::bind

發(fā)布時(shí)間:2023/12/10 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 std::function和std::bind 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

std::function和std::bind

std::function

  • 可調(diào)用對象
    • 是一個(gè)函數(shù)指針
    • 是一個(gè)具有operator()成員函數(shù)的類和對象
    • 可被轉(zhuǎn)換成函數(shù)指針的類對象;
    • 一個(gè)類成員函數(shù)指針;
  • C++中可調(diào)用對象的雖然都有一個(gè)比較統(tǒng)一的操作形式,但是定義方法五花八門,這樣就導(dǎo)致使用統(tǒng)一的方式保存可調(diào)用對象或者傳遞可調(diào)用對象時(shí),會十分繁瑣。C++11中提供了std::function和std::bind統(tǒng)一了可調(diào)用對象的各種操作。

    // 普通函數(shù) int add(int a, int b){return a+b;} // lambda表達(dá)式 auto mod = [](int a, int b){ return a % b;}// 函數(shù)對象類 struct divide{int operator()(int denominator, int divisor){return denominator/divisor;} };

    上述表達(dá)式雖然不同但是是同一種調(diào)用形

    int(int,int)

    std::function就可以將上述類型保存下來

    std::function<int(int ,int)> a = add; std::function<int(int ,int)> b = mod ; std::function<int(int ,int)> c = divide();

    std::bind

    可將std::bind函數(shù)看作一個(gè)通用的函數(shù)適配器,它接受一個(gè)可調(diào)用對象,生成一個(gè)新的可調(diào)用對象來“適應(yīng)”原對象的參數(shù)列表。

    std::bind將可調(diào)用對象與其參數(shù)一起進(jìn)行綁定,綁定后的結(jié)果可以使用std::function保存。std::bind主要有以下兩個(gè)作用:

    • 將可調(diào)用對象和其參數(shù)綁定成一個(gè)防函數(shù);
    • 只綁定部分參數(shù),減少可調(diào)用對象傳入的參數(shù)。

    std::bind綁定普通函數(shù)

    double my_divide (double x, double y) {return x/y;} auto fn_half = std::bind (my_divide,placeholders::_1,2); std::cout << fn_half(10) << '\n';
    • bind的第一個(gè)參數(shù)是函數(shù)名,回隱式轉(zhuǎn)換為函數(shù)指針,所以寫成&my_divide也可以;
    • 第二個(gè)參數(shù)是占位符,placeholders::_1自動(dòng)匹配第一個(gè)參數(shù)
    • 占位符可以有多個(gè)
    • 第三個(gè)參數(shù)是默認(rèn)值,調(diào)用時(shí)第二個(gè)參數(shù)默認(rèn)是2;(如果調(diào)用時(shí)第二個(gè)參數(shù)你指定了,那也沒有用,還是使用2);

    總結(jié)

    以上是生活随笔為你收集整理的std::function和std::bind的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。