zoukankan      html  css  js  c++  java
  • 条款20 STL函数对象

    继承标准STL的函数对象

       1:  struct PopLess : public atd::binary_function<state,state,bool>
       2:  {
       3:      bool operator() { const State &a, const State &b } const
       4:      {
       5:          return popless(a,b);
       6:      }
       7:  }

    作者的解释: 首先popless是一个函数对象,他重载了函数调用操作符,因此可以用普通函数的调用语法。当然也可以实例化;

    第二,他派生于标准的binary_function基类。此项机制允许其他不部分的STL实现询问函数对象编译器问题。在这个例子中,从binary function派生的popless 允许我们找出函数对象的参数和返回值类型。

    第三,这个函数对象木有数据成员,没有虚函数列表,没有显示声明的构造函数。

    调用方法

       1:  sort(union, union+50,popless())

    通过在popless后面附加括号,就创建了一个没有名字的临时popless,这个对象仅仅存在于函数调用器件; 使用这个的好处在于,在编译期就知道operator函数会被调用,因此可以内联他,这样可以提供更高的效率

       1:  struct IsWarm::public std::unary_function<state,bool>
       2:  {
       3:      return operator ()(const state &a ) const
       4:      {
       5:          return a.aveTempF >60;
       6:      }
       7:  }
       8:   
       9:  state * warmandsparse = find_if(union,union+50, IsWarm() );
  • 相关阅读:
    sql_mode=only_full_group_by引起group by查询报错问题
    在Eclipse下使用ant,build项目报jpeg does not exist
    JAVAEE面试之Hibernate缓存
    页面加载中效果实现
    鼠标滑过显示图片
    VSFTP配置参数详解
    FTP上传核心方法
    java对File的特殊操作
    在mybatis下使用日期比对出错
    Linux常用命令
  • 原文地址:https://www.cnblogs.com/hwtxf/p/3518165.html
Copyright © 2011-2022 走看看