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

溫馨提示×

溫馨提示×

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

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

怎么使用C++ bind函數

發布時間:2021-10-26 10:15:12 來源:億速云 閱讀:166 作者:iii 欄目:編程語言

本篇內容主要講解“怎么使用C++ bind函數”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“怎么使用C++ bind函數”吧!

1.使用由來

我們看到我使用的代碼是boost :: bind,而大家在網上看到的大部分介紹是標準函數std :: bind,其實boost ::  bind是標準函數std :: bind1st和std ::  bind2nd的泛化。它支持任意函數對象,函數,函數指針和成員函數指針,并且能夠將任何參數綁定到特定值或將輸入參數路由到任意位置。bind對函數對象沒有任何要求;  特別地,它不需要result_type,first_argument_type和second_argument_type標準typedef。

2.使用介紹

通常我們可以將bind函數看作一個通用的函數適配器,它接受一個可調用對象,生成一個新的可調用對象來“適應”原對象的參數列表。bind可以根據當前已有的可調用對象,構造出一個新的可調用對象,有了bind,我們可以實現“動態生成新的函數”的功能。簡而言之,就是可以通過bind函數修改原函數并生成一個可以被調用的對象,類似于函數的重載,但是我們又不需要去重新寫一個函數,用bind函數就可以實現。

接下來我們看看bind函數是如何使用的呢?

綁定一個普通函數和函數指針:

int fun(int a, int b,int c,int d,int e) {     return a + b - c + d - e; }  int main() {   int x=1,y=2,z=3;   auto g =bind(fun,x,y,_2,z,_1); }

這樣的g 是一個有兩個參數的可調用對象,它的兩個參數分別用占位符_2  和_1表示。這個新的可調用對象將它自己的參數作為第三個和第五個傳遞給fun,fun函數的第一個、第二個第四個參數分別被綁定到給定的值x、y、z上。

綁定一個成員函數:

bind最常用的功能之一,是由類成員函數構造bind對象;想想看,如何由類成員函數(非static成員函數)構造回調函數?答案是很難,而通過bind,卻可以很容易做到。

class Speaker { public     Speaker();     ~Speaker()     {         speaker_play_routine_->join();     }     void playRoutine()     {     } private     boost::thread* speaker_play_routine_{nullptr}; }; int main() {    speaker_play_routine_ = new boost::thread(boost::bind(&Speaker::playRoutine, this));  }

這里類的成員函數必須通過類的對象或者指針調用,因此在綁定時,bind要拿出第一個參數的位置來指定一個類的實例、指針或者引用。

注意:必須在成員函數前面加上取地址的操作符&。

到此,相信大家對“怎么使用C++ bind函數”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

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

c++
AI

基隆市| 五峰| 佛坪县| 左云县| 会理县| 崇左市| 云安县| 怀集县| 如皋市| 竹北市| 芒康县| 宜春市| 静乐县| 保靖县| 肥乡县| 西平县| 沁水县| 错那县| 郎溪县| 六枝特区| 进贤县| 罗平县| 杭锦后旗| 谷城县| 扶绥县| 崇左市| 白朗县| 卓尼县| 乌兰浩特市| 洞头县| 高州市| 英德市| 南靖县| 平湖市| 专栏| 白河县| 潼关县| 岑巩县| 蒙山县| 东海县| 阿克苏市|