现在的位置: 首页 > 综合 > 正文

仿函数(functor function objects)

2014年06月12日 ⁄ 综合 ⁄ 共 657字 ⁄ 字号 评论关闭

传递给算法的"函数参数",并不一定的是函数,可以使行为类似的函数对象.这种对象称为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;

}

}

抱歉!评论已关闭.