boost::bind四種應用場景的例子

 

   
普通函數

int f( int a, int b ){return a + b;}
boost::bind( f, _1, 9 )( 1 )函數

成員函數

struct demo{int f( int a, int b ){return a + b;}};
demo a, &ra=a;
demo *p = &a;
boost::bind( &demo::f, a, _1, 20 )( 10 )spa

成員變量

typedef std::pair<int, std::string> pair_t;
pair_t p( 123, "string" );
boost::bind( &pair_t::first, p )();
boost::bind( &pair_t::second, p )();.net

函數對象

struct sf{int operator()( int a, int b ){return a + b;}};
boost::bind<int>( sf(), _1, _2 )( 11, 22 )對象

ref庫 使用ref庫包裝對象的引用可讓bind 存儲對象引用的拷貝,從而下降了拷貝的代價

變量:int g( int a, int b, int c ){return a + b + c;}
int x = 10;
boost::bind( g, _1, boost::cref( x ), boost::ref( x ) )( 11 );

函數對象:struct sf{int operator()( int a, int b ){return a + b;}};
sf af;
boost::bind<int>( boost::ref( af ), _1, _2 )( 11, 22 );

 

轉載地址:http://blog.csdn.net/huang_xw/article/details/8452785blog

相關文章
相關標籤/搜索