C++的可调用对象分析(以sort的自定义比较操作举例来介绍)

C++的可调用对象:

所谓的可调用对象,它们都具有一个共同特点,就是可以像使用函数那样去调用,如f(args)这种形式,args是参数。

1. 函数名
2. 函数指针
3. 重载了括号"()"的对象
4. lambda表达式

接下来,以sort为例分别介绍这四种方法
1.函数名

bool cmp( const int& a,const int &b){
	return a<b;
}
int main()
{
	int a[] = {1,2,7,3,4,-2,-3,5};
	sort(a,a+8,cmp);
	for(int i:a)
		cout<<i<<" ";
} 

2.函数指针

bool cmp( const int& a,const int &b){
	return a<b;
}
int main()
{
	int a[] = {1,2,7,3,4,-2,-3,5};
	bool (*cmp1) (const int& ,const int &) = cmp;
	sort(a,a+8,cmp1);
	for(int i:a)
		cout<<i<<" ";
} 

注意cmp1是一个函数指针
3. 重载了括号"()"的对象

struct pred{
bool operator ()(const int& x,const int& y) const
	{
		return x<y;
	}
};
int main()
{
	int a[] = {1,2,7,3,4,-2,-3,5};
	sort(a,a+8,pred());//pred()是一个临时对象
	for(int i:a)
		cout<<i<<" ";
} 

4. lambda表达式

int main()
{
	int a[] = {1,2,7,3,4,-2,-3,5};
	sort(a  ,  a+8   ,	
	[](const int& x,const int& y){return x<y;}
	);
	for(int i:a)
		cout<<i<<" ";
} 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值