C++中仿函数的应用
使用仿函数时,主要使用以下两种:一种是从基类std::unary_function派生出来的派生类;另一个是从基类std::binary_function派生的派生类。而这两者有什么区别呢?两者的区别在于第一种类型接收的参数个数是一个,而第二种类型接收的参数个数是两个。仅仅...
好了,我们来看一些例子:
第一个
模板的使用
类满足Threshold:Public STD::Unary _ Function {
Private:
Const T Threshold;
public:
meets threshold(const T & threshold);
bool operator()(const Widget &)const;
...
};
第二种用法
Struct widget name compare:
public STD::binary _ function {
Bool Operator()(const widget & lhs,const widget & RHS)const;
};
exmoda提示:上面所说的接收参数个数,是指模仿函数中的重定义函数调用操作符接收参数个数与类型相同,并且一致。
以上是stl库中模仿函数的介绍,另一个库也有模仿函数(Loki库)。如果想详细实现它们,可以下载Loki库进行研究。
当你在读取Loki库中的函子时,首先要知道Mars代码,也就是Typelist。这是整个泛型编程的精髓,实现了模板的完美递归。
0条评论