自定义类型的优先队列
当优先队列不需要运用自定义类型时,直接写priority_queue<type>即可。
不过优先队列默认是降序。如果要改成升序的话还要变成下面形式:
priority_queue<Type, vector<Type>, greater<Type> > q;//默认是less
但是当需要用到自定义类型(如自己定义的结构体或者pair类型等)是,需要自己写比较函数或者重载<的。(毕竟计算机不知道怎么样才算小于嘛
那么这里就引入两种方式:
一.比较函数(我觉得跟比较函数很像,就叫比较函数了(虽然人家是struct
struct cmp { bool operator()(Type a, Type b) { return a.member > b.member; } };
就像上面的代码这样写就好了(我也不知道为啥要struct,也不知道为啥要重载括号(逃
之后调用的话需要在定义优先队列的时候调用,如下:
priority_queue< Type, vector<Type>, cmp> q;
二.重载小于号
struct Node { int member; bool operator<(const Node a) const { return member < a.member; } };
这样之后就可以跟最开始一样。定义的时候只用写个类型就可以了。
priority_queue< Type> q;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人