传递给算法的"函数参数",并不一定的是函数,可以使行为类似的函数对象.这种对象称为function object(函数物件),或者是functor(仿函数,跟函数有点一样,所以叫做仿函数呵呵)
1.什么是仿函数了?
你可以说,任何东西行为向函数,他就是函数,也就是一个对象可以向函数那样来使用
给出模型
class A{
return value operator()( arg(参数)) {
}
}
即是重载了"()"
2.用在什么地方
举一个书上的例子
calss Prinint{
public:
void operator()(int elem){
cout<<"elem"<<endl;
}
}
int main(){
vector<int > coll;
for(int i =1;i<10;i++)
coll.push_back(i);
for_each(coll.begin(), coll.end(), PrintInt() );
cout<<endl;
}
pinrtint 所做的定义显示,你可以对它的对象调用operator(),并传入一个int参数,
for_each() 这个就是从coll.begin开始 到 coll.end结束这区间调用PrintInt() 函数,将其打印
namespace std{
template <class Iterator,class Operatoin>
Operation for_each(Iterator act,Iterator end, Operartion op)
{
while(cat != end){
op(*act);
++act;
}
return op;
}
}