zoukankan      html  css  js  c++  java
  • STL的function object concepts

    1、几乎任何算法都能以 [ 将其行为的某一部分抽象为function object ]的方式来加以一般化;

    2、Function objects与adaptable function objects的区别:后者需要定义引用类型argument_type等,一般继承自基类unary_function和binary_function;

    3、任何function object concept 的基本条件只是:如果f是个function object,我们可以将operator( )施行于 f 身上。

    4、算法中固定了Function objects的输入变量及其个数,其一般都是指相关迭代器指针;
    而Function objects adapter的一个作用也是修改adaptable function objects的输出变量个数operator()( );

    struct last_name_is
    {
    string value;
    last_name_is(const string& val) : value(val) { } (构造函数初始化;)
    bool operator()(const Person& x) const { (const Person& x 是对象的输入,被调用时,由调用的函数内部输入参数,一般是迭代器对象值)
    return x.last_name == value;
    }
    };
    find_if(first, last, last_name_is("Smith"))


    class类Function object
    0、
    template<class Number> struct even
    {
    bool operator( ) (Number x) const { return (x & 1)==0;)}
    };
    这里的(Number x) 是类even的输出;
    一般还定义一个初始化函数constructor;
    1、find_if(f, l, even<int>( ));
    even<int>是个class,所以我们必须将该种class object传给find_if。所以我们必须调用其constructor。
    2、因为operator()被声明为inline,所以使用even时,不需任何函数调用;
    3、find_if(f, l, even<int>( ) )
    function call操作符operator()可以被重载,所以只要某个型别具有妥善定义的operator(),你便可以将该对象传给算法find_if当做引数。

  • 相关阅读:
    Net Core -- 配置Kestrel端口
    NET Core迁移
    NET Core 2.0 微服务跨平台实践
    NET Core 与 Vue.js 服务端渲染
    Varnish 实战
    Hitchhiker 是一款开源的 Restful Api 测试工具
    ABP框架用Dapper实现通过SQL访问数据库
    开源框架总体介绍
    Net Core API网关Ocelot
    Jquery autocomplete插件
  • 原文地址:https://www.cnblogs.com/wllwqdeai/p/10401827.html
Copyright © 2011-2022 走看看