bind函數(shù)模版

一略板、std::bind包裝器/適配器介紹

? ? ?1眠菇、函數(shù)模版bind生成f的可調用函數(shù)對象包裝器边败,調用此包裝器等價于一些綁定到args的參數(shù)調用f。

? ? ?2捎废、可以用來將用戶提供的需要一個參數(shù)的函數(shù)轉換成不需要參數(shù)的函數(shù)對象放闺。綁定的值存儲在函數(shù)對象內并且會被自動傳遞給指定的函數(shù)

二、std::bind定義

?????template< class R, class F, class... Args >

?????bind( F&& f, Args&&... args );

? ? ?參數(shù)說明:

? ? ?f:可調用對象(函數(shù)對象缕坎、指向函數(shù)指針、函數(shù)引用篡悟、指向成員函數(shù)指針或執(zhí)行數(shù)據(jù)成員指針)

? ? ?args:要綁定的參數(shù)列表谜叹,未綁定參數(shù)為命名空間std::placeholders的占位符_1匾寝、_2、_3....所替換

三荷腊、bind原理

? ? ?1艳悔、可以用來將用戶提供的需要一個參數(shù)的函數(shù)轉換成不需要參數(shù)的函數(shù)對象。綁定的值存儲在函數(shù)對象內并且會被自動傳遞給指定的函數(shù)

? ? ? ? ? bind自身是函數(shù)模版女仰,第一個參數(shù)是可調用對象猜年;第二個參數(shù)是參數(shù)列表

? ? ? ? ? (方便理解,描述可能錯誤)bind內部通過函數(shù)指針存儲可調用對象疾忍;通過值存儲參數(shù)列表乔外;最終在函數(shù)對象(operator())中完成函數(shù)調用

圖1 bind綁定普通函數(shù)

? ? ?2、參數(shù)綁定也可以用于將類成員函數(shù)轉換成零參數(shù)的函數(shù)對象一罩。非靜態(tài)成員函數(shù)需要一個隱士的this參數(shù)(相當于一個雷對象指針)杨幼,這意味需要一個合適的類實例指針到這個函數(shù)對象

圖2 bind綁定成員函數(shù)

? ? ?3、隱士的this指針也可以顯示地傳遞給需要一個參數(shù)的函數(shù)對象(自己測試沒通過)

圖3 bind綁定成員函數(shù)

? ? ? ? ? 4聂渊、函數(shù)對象經常同事使用提前綁定的參數(shù)和調用時才提供參數(shù)差购,這個可以用成員函數(shù)來實現(xiàn)

圖4 bind綁定時參數(shù)使用占位符

? ? ? ? ? 5、使用非成員函數(shù)

圖5 bind綁定非成員函數(shù)

? ? ? ? ? 6汉嗽、有時函數(shù)對象被調用時會提供多于的參數(shù)欲逃,而這些參數(shù)是目標函數(shù)不需要的,bind會自動忽略這些多于的參數(shù)

圖7 bind使用占位符規(guī)則

? ? ? ? ? 7饼暑、多于的參數(shù)不需要一定在函數(shù)對象簽名的最后面(std::placeholders的占位符 決定)

圖7 bind使用占位符規(guī)則

? ? ?8稳析、bind還允許重新組織函數(shù)對象的參數(shù)順序


圖8 bind使用占位符規(guī)則

四、使用詳解

? ? ?1撵孤、可調用元素

圖1 普通函數(shù)
圖2 類成員函數(shù)
圖3 類模版

? ? ?2迈着、將std::bind綁定到可調用元素

? ?? ?????1)綁定到普通函數(shù)

圖4 bind普通函數(shù)

? ? ? ? ? 2)綁定到函數(shù)模版

圖5 bind到函數(shù)模版

? ?? ?????3)綁定到lambda表達式

圖6 bind到lambda表達式

? ? ? ? ? 4)綁定到函數(shù)對象

圖7 bind到函數(shù)對象

? ? ? ? ? 5)綁定到類模版函數(shù)對象

圖8 bind到類模版函數(shù)對象

? ? ? ? ? 6)綁定到靜態(tài)成員函數(shù)

圖9 bind到靜態(tài)成員函數(shù)

? ? ? ? ? 7)綁定到靜態(tài)成員模版函數(shù)

圖10 bind到靜態(tài)成員模版函數(shù)

? ? ? ? ? 8)綁定到成員函數(shù)(this指針,不預綁定)

圖11 bind到成員函數(shù)(預綁定)

? ? ? ? ? 9)綁定到成員模版函數(shù)(this指針邪码,不預綁定)

圖12 bind到成員函數(shù)(不預綁定)

? ? ? ? ? 10)綁定到成員模版函數(shù)(this指針裕菠,預綁定)

圖13 bind到成員模版函數(shù)(不預綁定)

? ? ? ? ? 11)綁定到成員模版函數(shù)(this指針,不預綁定)

圖14 bind到成員函數(shù)(不預綁定)

五闭专、注意事項

? ? ?1奴潘、預綁定的參數(shù)是值傳遞的

? ? ?2、不預綁定的參數(shù)要用std::placeholders占位符的形式占位影钉,從_1開始画髓,一次遞增,是以引用的形式

? ? ?3平委、std::bind的返回值是可調用實體奈虾,可以直接賦值給std::function

? ? ?4、對于綁定的指針,引用類型參數(shù)肉微,調用者需要保證在調用之前生命周期還存在

? ? ?5匾鸥、std::placeholders表示新的可調用對象的第幾個參數(shù)和原函數(shù)的第幾個參數(shù)進行匹配


六、詳細代碼參考

鏈接:https://pan.baidu.com/s/1qZbbKNM 密碼:anm9

參考:

感謝http://www.cnblogs.com/xusd-null/p/3698969.html

感謝http://www.reibang.com/p/621fc81a1dc1

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末碉纳,一起剝皮案震驚了整個濱河市勿负,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌劳曹,老刑警劉巖奴愉,帶你破解...
    沈念sama閱讀 217,406評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異铁孵,居然都是意外死亡锭硼,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評論 3 393
  • 文/潘曉璐 我一進店門库菲,熙熙樓的掌柜王于貴愁眉苦臉地迎上來账忘,“玉大人,你說我怎么就攤上這事熙宇”钋埽” “怎么了?”我有些...
    開封第一講書人閱讀 163,711評論 0 353
  • 文/不壞的土叔 我叫張陵烫止,是天一觀的道長蒋荚。 經常有香客問我,道長馆蠕,這世上最難降的妖魔是什么期升? 我笑而不...
    開封第一講書人閱讀 58,380評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮互躬,結果婚禮上播赁,老公的妹妹穿的比我還像新娘。我一直安慰自己吼渡,他們只是感情好容为,可當我...
    茶點故事閱讀 67,432評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著寺酪,像睡著了一般坎背。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上寄雀,一...
    開封第一講書人閱讀 51,301評論 1 301
  • 那天得滤,我揣著相機與錄音,去河邊找鬼盒犹。 笑死懂更,一個胖子當著我的面吹牛眨业,可吹牛的內容都是我干的。 我是一名探鬼主播沮协,決...
    沈念sama閱讀 40,145評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼坛猪,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了皂股?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,008評論 0 276
  • 序言:老撾萬榮一對情侶失蹤命黔,失蹤者是張志新(化名)和其女友劉穎呜呐,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體悍募,經...
    沈念sama閱讀 45,443評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡蘑辑,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,649評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了坠宴。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片洋魂。...
    茶點故事閱讀 39,795評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖喜鼓,靈堂內的尸體忽然破棺而出副砍,到底是詐尸還是另有隱情,我是刑警寧澤庄岖,帶...
    沈念sama閱讀 35,501評論 5 345
  • 正文 年R本政府宣布豁翎,位于F島的核電站,受9級特大地震影響隅忿,放射性物質發(fā)生泄漏心剥。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,119評論 3 328
  • 文/蒙蒙 一背桐、第九天 我趴在偏房一處隱蔽的房頂上張望优烧。 院中可真熱鬧,春花似錦链峭、人聲如沸畦娄。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,731評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽纷责。三九已至,卻和暖如春撼短,著一層夾襖步出監(jiān)牢的瞬間再膳,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,865評論 1 269
  • 我被黑心中介騙來泰國打工曲横, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留喂柒,地道東北人不瓶。 一個月前我還...
    沈念sama閱讀 47,899評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像灾杰,于是被迫代替她去往敵國和親蚊丐。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,724評論 2 354

推薦閱讀更多精彩內容