¹ØÓÚbindµÄÒ»¸öÓ÷¨ÒÉÎÊ
bindµÄÎĵµÀïÓÐÕâÑùÒ»¸öÀý×Ó:>>>>
Çë×¢Ò⣬µÚÒ»¸ö²ÎÊý¨D¨D±»°ó¶¨µÄº¯Êý¶ÔÏó¨D¨D²¢²»±»ÇóÖµ£¬¼´Ê¹ËüÊÇÒ»¸öbindÉú³ÉµÄº¯Êý¶ÔÏó»òÕßÒ»¸öռλ·û£¬ËùÒÔÏÂÃæµÄÀý×Ó²¢
²»ÄÜÏñÔ¤ÆÚµÄÄÇÑù¹¤×÷£º
typedef void (*pf)(int);
std::vector v;
std::for_each(v.begin(), v.end(), bind(_1, 5));
¿ÉÒ»¸öÓÃÒԵĸ¨Öúº¯Êý¶ÔÏóapply´ïµ½Ä¿µÄ¡£apply½«ËüµÄµÚÒ»¸ö²ÎÊýµ±×÷Ò»¸öº¯Êý¶ÔÏó£¬È»ºó½«²ÎÊý±íÖÐµÄÆäËü²ÎÊý´«µÝ¸øËü£¬
³öÓÚ·½±ãÆð¼û£¬ÔÚboost/bind/apply.hppÖаüº¬ÁËÒ»¸öapplyµÄʵÏÖ¡£ÏÂÃæÊÇǰһ¸öÀý×ÓÐ޸ĺóµÄ°æ±¾£º
typedef void (*pf)(int);
std::vector v;
std::for_each(v.begin(), v.end(), bind(apply(), _1, 5));
<<<ÕâÀïµÄapplyµ½µ×ÊÇ×÷ʲôÓõÄ? ¿´Ñù×Ó apply() ÊǸö function object bind Ó÷¨Ê¾Àý:
[code]
#include <iostream>
#include <algorithm>
#include <boost/bind.hpp>
using namespace std;
void print_sum(int a, int b)
{
cout << (a + b) << endl;
}
int main()
{
int arr[4] = { 11, 22, 33, 44 };
for_each(arr, arr + 4, boost::bind(print_sum, _1, 100));
}
[/code] ±àÒë¡¢ÔËÐнá¹û£º[code]
[color=blue][foo@bar tmp] $[/color] gxx foo.cc -I/usr/local/boost_1_32_0/include/boost-1_32/
[color=blue][foo@bar tmp] $[/color] ./a.out
111
122
133
144
[color=blue][foo@bar tmp] $[/color]
[/code] µÚÒ»´ÎÓà boost£¬¸Ð¾õ»¹²»´í :)
Ò³:
[1]