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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

boost::bind 介绍

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

boost::bind 介紹

?? ?這篇文章介紹boost::bind()的用法, 文章的主要內(nèi)容是參考boost的文檔。

1. 目的

?? boost::bind 是std::bindlist 和 std::bind2nd的結(jié)合體。它提供一個(gè)任意的函數(shù)對(duì)象(仿函數(shù))、函數(shù)、函數(shù)指針、成員函數(shù)指針。 它可以綁定任意的參數(shù)。bind 沒有對(duì)函數(shù)對(duì)象有任何的要求。

2. 把bind()用在函數(shù)和函數(shù)指針上

??? 有如下代碼:

?

1 void f(int a, int b) 2 { 3 cout << a + b << endl; 4 } 5 ?void g(int a, int b, int c) 6 { 7 cout << a + b + c << endl;; 8 }

?

??? 當(dāng)調(diào)用boost::bind(f, 1, 2);的時(shí)候, 它會(huì)產(chǎn)生一個(gè)空的函數(shù)對(duì)象,這個(gè)對(duì)象沒有參數(shù), 返回 f(1,2).當(dāng)然我們也可以給它加個(gè)參數(shù):

?

1 int a = 10; 2 boost::bind(f, _1, 5)(a); 3 int x(10),y(20),z(30); 4 boost::bind(g,_1,_2,_3)(x, y, z);

?

??? 結(jié)果:

??? 作為和std::bindlst的對(duì)比我們可以看下如下的代碼:

1 std::bind1st(std::ptr_fun(f), 5)(x); // f(5, x) 2 boost::bind(f, 5, _1)(x); // f(5, x)

??? 是不是boost::bind()簡(jiǎn)單多了。

3. 把bind()用在函數(shù)對(duì)象(仿函數(shù))上

??? bind()不僅能夠用在函數(shù)上,而且可以接受任意的函數(shù)對(duì)象(仿函數(shù))。如:

?

1 class F 2 { 3 public: 4 int operator()(int a, int b) 5 { 6 cout << a+b <<endl; 7 return a+b; 8 } 9 double operator()(double a, double b) 10 { 11 cout << a+b<< endl; 12 return a +b; 13 } 14 }; 15 int _tmain(int argc, _TCHAR* argv[]) 16 { 17 F f; 18 int a[] = {1, 2, 3, 4, 5, 6,7}; 19 double aDouble[] = {1.1, 2.2, 3.3, 4.4,5.5,6.6,7.7}; 20 for_each(a, a+7, boost::bind<int>(f, _1, _1)); 21 for_each(aDouble, aDouble+7, boost::bind<double>(f, _1, _1)); 22 return 0; 23 }

?

4. 把bind()用在成員變量和成員函數(shù)上

??? 指向成員變量的指針和指向成員函數(shù)的指針和仿函數(shù)不一樣, 因?yàn)樗麄儧]有提供operater()。boost用它的第一個(gè)參數(shù)接受類成員的指針,這樣就像用boost::mem_fn()把類成員的指針轉(zhuǎn)化為仿函數(shù)一樣。如:

bind(&X::f, args)

就等于

bind<R>(mem_fn(&X::f), args)//R 是x::f的返回值。 列如:

?

1 struct X 2 { 3 bool f(int a) 4 { 5 cout << a <<endl; 6 return static_cast<bool>(a); 7 } 8 }; 9 int _tmain(int argc, _TCHAR* argv[]) 10 { 11 X x; 12 boost::shared_ptr<X> p(new X); 13 int i = 5; 14 boost::bind(&X::f, &x, _1)(i); // (&x)->f(i); 15 boost::bind(&X::f, x, _1)(i); //(copy x).f(i); 16 boost::bind(&X::f, p, _1)(i); //(copy p)->f(i); 17 return 0; 18 }

?

?? ?boost::bind()的基本用法就這些, 在使用的過(guò)程中發(fā)現(xiàn)確實(shí)比較爽, 但是這不知道這是不是常常被人批判的語(yǔ)法糖。

總結(jié)

以上是生活随笔為你收集整理的boost::bind 介绍的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 韩国三级黄色 | 欧美xxxxx视频 | 欧美一区二区三区免费观看 | 中国极品少妇xxxx做受 | av资源免费看| 人人妻人人澡人人爽久久av | 99视频在线观看视频 | 亚洲综合网在线观看 | 成人亚洲玉足脚交系列 | 久久一 | 超碰在线9 | 91在现看 | 亚洲黄色片| 天天看夜夜看 | 福利精品视频 | 91精品欧美一区二区三区 | 99久久久无码国产精品性波多 | 中文在线日本 | 在线一区观看 | 90岁肥老奶奶毛毛外套 | 美国一级大黄一片免费中文 | 狠狠干狠狠插 | 欧美123区 | 麻豆一区二区在线 | www日本www | 456亚洲影院 | 黄色av观看 | 欧美一级一区二区三区 | 国产人妖在线视频 | 就爱操av| 少妇搡bbbb搡bbb搡打电话 | 欧美日韩一区不卡 | 爱爱中文字幕 | 欧美性天天 | 亚洲精品在线看 | 日韩精品乱码 | 精品人妻无码一区二区性色 | 999国产精品亚洲77777 | 色天天干| 美女主播福利视频 | 欧美日韩中文字幕在线视频 | 久久久久久久久久久久国产 | 精品视频一区二区在线观看 | 俺也去五月婷婷 | 在线你懂的视频 | 激情视频一区二区三区 | 欧美一区二区三区黄片 | 国产最新网址 | 777奇米色 | 国产成人麻豆免费观看 | 欧美精品videos另类日本 | 噼里啪啦国语电影 | 日日操夜夜操狠狠操 | 欧美日韩操| 精品免费久久 | 欧美一区二区大片 | 人成免费在线视频 | 免费av网站观看 | 香蕉在线视频播放 | 朝桐光在线观看 | 日本大尺度激情做爰hd | 久久有精品 | 黄色a在线观看 | 日韩av导航| 国产精品一区二区无码对白 | 男女视频免费观看 | 成人宗合网 | 国产1级片 | 黄色av成人 | 久久看视频 | 国产情侣呻吟对白高潮 | 欧美综合一区二区 | av观看网站 | 不卡黄色| 国产福利一区在线观看 | 6080成人| 永久免费的网站入口 | 欧美黑人又粗又大又爽免费 | av最新资源 | 黄色免费网 | 久久精品99久久久久久 | a在线视频| 日韩三级a| 一级黄色片免费看 | 国产在线操 | 极品美女av | 娇妻被肉到高潮流白浆 | 精品人妻人人做人人爽夜夜爽 | 中文字幕在线视频一区二区三区 | 妹子干综合 | 影音先锋在线看片资源 | 欧美日韩国产成人 | 黄色片网站免费在线观看 | 欧美激情片一区二区 | 九九九久久久 | 国产乱一区二区三区 | 国产福利91精品一区二区三区 | 色噜噜狠狠一区二区三区果冻 | 亚洲观看黄色网 |