91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C++ bind函數適配器

發布時間:2020-08-11 08:23:10 來源:網絡 閱讀:861 作者:zmh009_NAME 欄目:編程語言

    在我之前的博客讓類成員函數指針成為可調用對象里有提到bind函數適配器,現在在這里介紹一下。

    適配器可以讓某一個看上去像另一個行為,比如棧、隊列等,底層使用鏈表去完成功能,我們通過操作底層鏈表去實現棧、隊列等的行為。bind是函數適配器,通過bind返回的可調用對象去完成指定函數的功能。

    bind的頭文件是<functional>,可使用命名空間std::placeholders的_n形式引用外部參數,屬于C++11標準。

    使用例子:

// main.cpp
#include <functional>
#include <iostream>
using namespace std::placeholders;
using std::less;
using std::cout;
using std::endl;

int main()
{
    // less<int>是函數類模板,less<int>()返回一個臨時值,可作為可調用對象,通過重載調用運算符調用
    auto f = bind(less<int>(),2,_1); // bind里2為可調用對象的第一個參數,_1為可調用對象的第二個參數,以此類推
    cout << f(3) << endl; // 此處3對應bind里的_1,等價于less<int>()(2,3),即2與3比較大小
    return 0;
}

    _1、_2、...、_29等為命名空間std::placeholders的成員(在頭文件里從_1到_29,可使用29種參數,在平常的編程里已經足夠了,可通過std::placeholders::_n使用),可以接收外部的實參作為指定可調用對象的某個參數,bind里第二個開始的參數順序為可調用對象的參數順序,_n形式為外部的實參,通過bind返回的可調用對象傳入:

    如:auto fnt = bind(function,_2,2,"3",_2,_1);里(看上去有些復雜),等價于function(_2,2,"3",_2,_1);調用,而_1、_2需要bind返回的fnt接收,如果有fnt(x,y);則等價于function(y,2,"3",y,x);此時_1為x,_2為y。

    bind的使用環境,如傳入可調用對象的參數過多時,可以通過bind指定一個或幾個已知的參數,然后其他的參數在使用時指定,如果使用less<T>時,如果使用時需要動態傳入一個參數,在使用前已知需要比較的是數字num,則使用auto fnt = bind(less<int>(),num,_1);,通過fnt接收外部的參數以完成功能。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

剑阁县| 内黄县| 申扎县| 石棉县| 凤山县| 九寨沟县| 兴仁县| 沛县| 东阿县| 巫溪县| 丰都县| 齐齐哈尔市| 沈阳市| 涟水县| 洛浦县| 浮梁县| 乐东| 泸州市| 宜君县| 永济市| 石屏县| 汾阳市| 托克逊县| 翁源县| 靖远县| 无棣县| 闵行区| 图片| 洞口县| 武义县| 乌什县| 汝阳县| 韶山市| 志丹县| 新干县| 汝南县| 通州市| 明光市| 镇坪县| 出国| 澄江县|