首页 > 其他分享 >42函数对象

42函数对象

时间:2024-03-04 21:44:19浏览次数:16  
标签:return 函数 对象 42 bool template operator

函数对象

#include <iostream>
using namespace std;

/*
template<typename T>
bool mygreater(T a, T b)
{
    return a > b;
}

template<typename T>
bool myless(T a, T b)
{
    return a < b;
}
*/

/*
1.通过函数对象调用operator(),可以省略函数的调用开销,比通过函数指针调用函数(不能够内联调用)效率高
2.因为函数对象是用类生成的,所以可以添加相关的成员变量,用来记录函数对象使用时更多的信息
*/
// C++函数对象的版本实现
template<typename T>
class mygreater
{
public:
    // 二元函数对象
    bool operator() (T a, T b) { return a > b; }
};

template<typename T>
class myless
{
public:
    // 二元函数对象
    bool operator() (T a, T b) { return a < b; }
};

template<typename T, typename Compare>
bool compare(T a, T b, Compare comp)
{
    // 通过函数指针调用函数,是没有办法内联的,效率很低,因为有函数调用开销
    return comp(a, b);
}

int main()
{
    cout << compare(10, 20, mygreater<int>()) << endl;
    cout << compare(10, 20, myless<int>()) << endl;

	set<int, greater<int>> set1; //默认从大到小排列元素
    for(int v: set1)
	{
		cout << v << " ";
	}

    return 0;
}

标签:return,函数,对象,42,bool,template,operator
From: https://www.cnblogs.com/sio2zyh/p/18052788

相关文章

  • 编码绕过xss说明和htmlspecialchars函数
    html实体编码JS编码1.htmlspecialchars函数把一些预定义的字符转换为html实体预定义的字符&->&amp;"->"'->'<-><>->gt;<script>--><&ltscript&gt默认绕过绕过方式:payload:'onclick='alert(123)'或者&#......
  • JAVA面向对象基础:封装,实体JavaBean
     封装: 封装设计对象规范:合理隐藏,合理暴露 即类中使用的public与private关键字合理使用(只暴露对对象数据操作的方法,不暴露数据,故在对象中用private来封装数据,用public来封装方法)将成员变量保护起来,将get与set方法暴露出来供相关操作。将需要外界访问的成员方法用public,不......
  • Flask请求扩展与g对象
    请求扩展1before_request任意一次请求来了,都会执行这个装饰器装饰的函数(与Django中process_request类似)@app.before_requestdefbefore_request():print('请求来了')2after_request任意一次请求走了,就会执行这个装饰器装饰的函数(与Django中process_response类似......
  • c++在类外是不能直接调用私有成员函数的
    c++在类外是不能直接调用私有成员函数的,比如#include<iostream>usingnamespacestd;classA3{voidshow3(){cout<<"classA3"<<endl;//注意,类内部默认是私有}};intmain(){A3obj3;obj3.show3();//这里出错return0;}......
  • JAVA面向对象基础:this关键字
    this;this就是一个变量,可以用在方法中,来拿到拿到当前对象   this的应用场景:this主要用来解决变量名称冲突问题的。   this真正解析: ......
  • 别再低效筛选数据了!试试pandas query函数
    数据过滤在数据分析过程中具有极其重要的地位,因为在真实世界的数据集中,往往存在重复、缺失或异常的数据。pandas提供的数据过滤功能可以帮助我们轻松地识别和处理这些问题数据,从而确保数据的质量和准确性。今天介绍的query函数,为我们提供了强大灵活的数据过滤方式,有助于从复杂的......
  • 方法和函数的区别
    调用方式的不同函数的调用方式:函数名(实参列表)。方法的调用方式:变量.方法名(实参列表)。对于普通函数,接收者为值类型时,不能将指针类型的数据直接传递,反之亦然。对于方法来说,接收者为值类型时,可以直接用指针类型的变量调用方法,反过来同样可以。总结:不管调用形式如......
  • springframework BeanUtils 复制java对象属性值 copyProperties
    importorg.springframework.beans.BeanUtils;importorg.springframework.beans.BeanWrapper;importorg.springframework.beans.BeanWrapperImpl;importjava.beans.PropertyDescriptor;importjava.util.HashSet;importjava.util.Set;/***ObjectBeanUtils*......
  • coalesce函数用法sql
    原文链接:https://baijiahao.baidu.com/s?id=1725625533668535989&wfr=spider&for=pccoalesce语法:COALESCE(value1,value2,...);举个例子:返回表达式中第一个非空表达式,以下语句:SELECTCOALESCE(NULL,NULL,3,4,5)FROMdual其返回结果为:3 MySQLCOALESCE与IFNULL......
  • RGB和YCbCR 的420/444格式
    目录RGBYUVYCbCrRGBRGB图像具有三个通道R、G、B,分别对应红、绿、蓝三个分量,由三个分量的值决定颜色;通常,会给RGB图像加一个通道alpha,即透明度,于是共有四个分量共同控制颜色。那么对于一张1920*1080的图片,如果采用RGBA编码格式,这一张图片加载到内存并在设备中显示时,所占用的内......