写了个小函数温习一下,呵呵。
#include <vector>
#include <algorithm>
#include <iostream>
using namespace std;
class Test
{
public:
void print(int a)
{
cout << a << endl;
}
};
int main()
{
vector<int> v(10,10);
Test t;
for_each(v.begin(),v.end(),bind1st(mem_fun(&Test::print),&t) );
vector<Test> v2(10);
for_each(v2.begin(),v2.end(),bind2nd(mem_fun_ref(&Test::print),1) );
mem_fun_ref(&Test::print)(t,6);
mem_fun(&Test::print)(&t,8);
}
总之,对0元成员函数,mem_fun返回的函数对象(当作函数调用时)接受一个参数,即该类对象指针,
对1元成员函数,mem_fun返回的函数对象接受两个参数,第一个参数是该类对象指针,第二个参数是成员函数所接受参数。通过bind可以使其接受1个参数。
mem_fun_ref是针对对象的版本(而不是指针)