zoukankan      html  css  js  c++  java
  • 函数对象

    在线资料


    维基百科: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/

  • 相关阅读:
    Ubuntu修改root默认密码
    2012年总结
    阿朵,网上传得沸沸扬扬,我们还是听听她的歌吧!
    人力资源开发网站
    关于ant
    ObjectSpaces
    firefox plugs
    xpi插件的安装
    年关
    https的资源
  • 原文地址:https://www.cnblogs.com/heartchord/p/4479371.html
Copyright © 2011-2022 走看看