结构体&优先队列 自定义排序

本文详细探讨了如何在使用优先队列时对自定义类型进行排序。主要涉及两种方法:一是通过重载操作符`<`,二是编写自定义的仿函数。在重载`operator<`后,可以简化优先队列的声明,但若要使用`greater`,需重载`operator>`。同时,文章提供了一个示例,展示了如何实现基于多个属性的复杂排序需求。
摘要由CSDN通过智能技术生成
#include<bits/stdc++.h>  
using namespace std;  
typedef long long LL;  
struct node  
{  
    LL d;//储存距离   
    int u;//点的标号 	
    bool operator < ( const node& b)const// & 表示的是引用, 
	{
		return d > b.d; // 当定义优先队列的时候 这里的 > 代表的是进如有限队列的顺序,
//		                  	也就是大的先进,所以出来的顺序是小的先出  
	}
};
//  < 是被重载的运算符,即如果有两个结构体 a ,b  比较的时候必须是 a<b如果结果为真,就说明 a.d > b.d;如果为假,代表着a.d < b.d 

这篇文章将的很好:https://www.cnblogs.com/Deribs4/p/5657746.html

有空的话看看什么是仿函数;

好像能仿写priority_queue<Node,vertor<Node>,greater(Node)>里面的greator函数

下面是重点摘抄:

 

2.3 对于自定义类型,则必须重载operator<或者重写仿函数。

2.3.1 重载operator<的例子:返回true时,说明左边形参的优先级低于右边形参

#include <iostr
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值