函数对象

在线资料


维基百科:http://zh.wikipedia.org/wiki/%E5%87%BD%E6%95%B0%E5%AF%B9%E8%B1%A1

函数对象的基本概念


       函数按照传入参数个数的不同可以分成:Generator Function(无参函数)、Unary Function(一元函数)、Binary Function(二元函数)、Ternary Funtion(三元函数)等等,它们各自表示能以F()、F(x)、F(x, y)、F(x, y, z)的形式出现的函数。

       顾名思义,函数对象就是在某种方式上工作地像一个函数的类对象。典型的,函数对象是一个类的实例,并且这个类重载了操作符 operator()

       predication(谓词):返回bool类型的函数对象叫做谓词。一个返回bool值的Unary Function称作Unary Predication(一元谓词);返回bool值的Binary Function称作Binary Predicate(二元谓词)。

函数对象的基本形式


       函数对象类型基本形式如下:

class FunctionClass
{
public:
    bool operator() (param_list)
    {
        ......
    }
};

 函数对象的使用举例


       这里以sgi stl中内置谓词为例:

// sgi stl v3.3
// stl_function.h
// 一元谓词基类
template <class _Arg, class _Result>
struct unary_function
{
    typedef _Arg     argument_type;
    typedef _Result result_type;
};

// 二元谓词基类
template <class _Arg1, class _Arg2, class _Result>
struct binary_function
{
    typedef _Arg1   first_argument_type;
    typedef _Arg2   second_argument_type;
    typedef _Result result_type;
};

// 求负数运算
template <class _Tp>
struct negate : public unary_function<_Tp, _Tp> 
{
    _Tp operator() (const _Tp& __x) const { return -__x; }
};

template <class _Tp>
struct plus : public binary_function<_Tp, _Tp, _Tp>
{
    _Tp operator() (const _Tp& __x, const _Tp& __y) const
    {
        return __x + __y;
    }
};

 stl内置函数对象


http://www.cplusplus.com/reference/functional/

原文地址:https://www.cnblogs.com/heartchord/p/4479371.html