C++priority_queue优先队列
优先队列 他和queue不同的就在于我们可以自定义其中数据的优先级, 让优先级高的排在队列前面,优先出队 优先队列具有队列的所有特性,包括基本操作,只是在这基础上添加了内部的一个排序 定义:priority_queue<数据类型, 容器类型, 比较的方式> 容器类型:必须是用数组实现的容器,比如vector--默认,deque等,但不能用list。STL里面默认用的是vector 比较的方式:数据的优先级 std::greater 升序队列 最小值优先队列 std::less 降序队列 最大值优先队列--默认 复制代码 #include<iostream> #include <queue> #include <vector> int main() { std::priority_queue <int, std::vector<int>, std::greater<int> > q; //创建优先队列对象 /* 参数3:std::greater 升序队列 最小值优先队列 std::less 降序队列 最大值优先队列 */ int i=10; q.push(i); i = 9; q.push(i); i = 100; q.push(i); i = 6; q.push(i); i = 50; q.push(i); int n = q.size(); i = q.top(); //返回优先级最高元素,但不删除,( 在优先队列中,没有 front() 函数与 back() 函数 ) std::cout << i << std::endl; std::cout << n << std::endl; } 复制代码 复制代码 #include<iostream> #include <utility> #include <vector> #include <queue> int main() { //先按照pair的first元素降序;first元素相等时,再按照second元素降序: std::priority_queue<std::pair<int, int> >p; std::pair<int, int> a(3, 4); std::pair<int, int> b(3, 5); std::pair<int, int> c(4, 3); p.push(a); p.push(b); p.push(c); while (!p.empty()) { std::cout << p.top().first << "\t" << p.top().second << std::endl; p.pop(); } return 0; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)