【C++】lambda表达式

本文介绍了C++11中新增的lambda表达式,包括其语法结构、在自定义排序中的应用,以及与传统函数对象的对比,展示了lambda表达式如何简化代码并提高编程效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、lambda表达式

1.1 C++98中的例子

如果要对一个数据集合进行排序,可以使用sort函数:

int main()
{
   
	int array[] = {
    4,1,8,5,3,7,0,9,2,6 };
	// 默认按照小于比较,排出来结果是升序
	std::sort(array, array + sizeof(array) / sizeof(array[0]));
	// 如果需要降序,需要改变元素的比较规则
	std::sort(array, array + sizeof(array) / sizeof(array[0]), greater<int>());
	return 0;
}

升序:
在这里插入图片描述

降序:
在这里插入图片描述

如果元素是自定义类型,那么要通过仿函数来确定比较规则:

struct Goods
{
   
	string _name;// 名字
	double _price;// 价格
	int _evaluate;// 评价
	Goods(const char* str, double price, int evaluate)
		:_name(str)
		, _price(price)
		, _evaluate(evaluate)
	{
   }
};
//小于 -- 升序
struct ComparePriceLess
{
   
	bool operator()(const Goods& gl, const Goods& gr)
	{
   
		return gl._price < gr._price;//价格
	}
};
//大于 -- 降序
struct ComparePriceGreater
{
   
	bool operator(
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值