c++学习之优先队列(priority_queue)
来源:互联网 发布:麒麟970和高通835知乎 编辑:程序博客网 时间:2024/05/18 13:25
优先队列的思想是比较简单的,就是在队列的基础上按照某一特定元素进出队列,计算机中作业的优先调度,就是按照作业的权值优先,先出队列。在STL容器中,优先队列的实现是使用的heap,也就是堆,用一个二叉堆维护一个优先队列,具体的堆的使用方法不做介绍,主要是了解priority_queue的基本使用方法及一点需要注意的地方。基本使用方法和其他的容器一样,需要将模版具象化,也就是指明类型,然后通过接口调用即可,下面的连接是STL中priority_queue的基本介绍,接口还有范例:http://www.cplusplus.com/reference/queue/priority_queue/
自己也随手写了几行代码,留作以后作为参考范例:
#include <iostream>#include <queue>#include <string>using namespace std;struct TestType{int cnt;string num;friend bool operator < (const TestType &t1,const TestType &t2){return t1.num < t2.num;}};/*重载函数操作符*/template <typename Type>struct cmp{//t1 < t2时,按照<号的降序排序, t2 < t1时按照 < 号的升序排列bool operator() (const Type &t1, const Type &t2){return t2 < t1;}};int main(){priority_queue< TestType,vector<TestType>,cmp<TestType> > Q;/* 使用基本类型,默认降序排列*/priority_queue < string > sQ;//priority_queue< TestType,vector<TestType>,cmp > Q;TestType tmp;while(cin>>tmp.cnt && cin>>tmp.num ){Q.push(tmp);sQ.push(tmp.num);//插入到sQ中}tmp = Q.top();cout << "TestType priority_queue" <<endl;cout <<tmp.cnt <<" " << tmp.num <<endl;while(!Q.empty()){cout << Q.top().cnt << " " << Q.top().num <<endl;Q.pop();}cout << "string priority_queue" <<endl;while(!sQ.empty()){cout << sQ.top() <<endl;sQ.pop();}return 0;}需要注意的地方不多,优先队列中的元素需要支持"<"操作符,并默认为队列中的元素按降序排列,也就说如果优先队列按照自己重新定义的类型比较的话,需要重载” < “操作符,上面的cmp是我重载的函数操作符。
- C++STL之priority_queue优先队列容器
- 【C++】优先队列priority_queue
- C++priority_queue优先队列
- c++学习之优先队列(priority_queue)
- 再次学习priority_queue优先队列
- 数据结构 之 priority_queue 优先队列
- STL 之 优先队列(priority_queue)
- C++ 之 优先队列 priority_queue
- STL之优先队列priority_queue
- STL学习之优先队列(Priority_queue)(1)
- C++STL--priority_queue(优先队列)
- 【学习笔记】关于优先队列 Priority_queue
- Priority_Queue 优先队列 C++学习笔记
- STL priority_queue优先队列容器学习记录
- STL系列之五 priority_queue 优先队列
- STL之priority_queue的用法,优先队列
- STL之优先队列priority_queue浅析
- STL之priority_queue(优先队列)
- 服务器类型
- 通俗易懂 Socket I/O模型全接触【转载内容】
- UIImageView实现图片的移动和缩放 【转】
- ACM暑假集训标准程序_Day5_1001
- Sum(poj1844,简单枚举)
- c++学习之优先队列(priority_queue)
- mysql 如何获取数据库当前时间
- 常用数据库的驱动程序及JDBC URL
- 《JAVA与模式》之模板方法模式
- Doing Homework again(hdu1789,贪心)
- Spring在ssh框架运用中的事务部分详解(2)
- jquery实现 checkbox全选和反选 很常用噢....
- 使用Windbg调试内核
- OSI TCP/IP 模型