C++ 类的重载运算符和priority_queue综合使用

本文记录了如何在C++中重载运算符以实现类之间的比较,并结合priority_queue解决代码超时问题。通过示例介绍了重载运算符的两种方法,以及priority_queue的基本使用,包括默认排序规则。最后展示了如何将重载运算符的类与priority_queue结合,以适应复杂的排序需求。
摘要由CSDN通过智能技术生成

今天在写poj上的一道题时,提交之后显示代码运行超时,查了一下网上都说因为测试数据量大,普通循环查找很容易超时,用优先队列能解决问题,有时题目里设计到的状态信息比较复杂,要用一个类来维护,类的重载运算符自从上学期学过之后我就忘光了,于是现在写一篇博客好好记录一下:

C++中类的重载运算符

我们知道int可以比较,类和类之间只要通过重载运算符,也可以通过 >, <等方式来比较大小。

一般重载运算符有两种方式,我直接上代码,代码里面都有详细注释:

#include<iostream>
#include<algorithm>
#include<queue> 
using namespace std;
class Node{
    public:
        int a, b;
    //这是重载运算符卸载类内部的写法,效果与外部一样,从小到大都是<。 
    //ps:第一行最后的const如果只用sort可以不加,用priority_queue的话
    //    就要加上,还是养成习惯都加上吧 
    bool operator < (const Node & n) const{
        return a > n.a;
    } 
};
//写在类声明的外部,如果是<,从小到大,如果是>,从大到小 
/*
bool operator < (const Node &n1, const Node &n2){
    return n1.a < n2.a;
}
*/

上面是两种重载运算符的方式,一种声明在内部,参数只需要写一个,另一个和普通函数一样声明的外面,所以比较的两个对象都需要写出来。

priority_queue优先队列

优先队列可以按照你给定的规则来维护一个队列,是que的升级版,如果是默认的数据类型,int等,默认的声明代表了从大到小维护数据,当然也可以从小到大维护,下面是代码:

p
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值