ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

STL十大容器 之 优先队列 priority_queue

2019-09-18 19:41:23  阅读:218  来源: 互联网

标签:priority pq Stu STL queue int que push include


头文件:

    #include <queue>

可调用函数:

	empty() 如果优先队列为空,则返回真 
	pop() 删除第一个元素 
	push() 加入一个元素 
	size() 返回优先队列中拥有的元素的个数 
	top() 返回优先队列中有最高优先级的元素 

泛型的实现:

		tmplate<class T,class C,class COM>
		//T代表容器存储的类型   C代表底层实现的容器     COM表示优先级规则
		class priority_queue{
		
		};//默认是根据自定义类型的 < 比较来确定优先级

应用:

要求:
1、存储学生类型;
2、成绩最高的先出列 成绩一样则按学号出列;

程序示例:

#include <queue>
#include <vector>
#include <list>
#include <deque>
#include <iostream>
using namespace std;
class Com{
public:
	int operator()(const int& a,const int& b){
		return a>b;	
	}
	
};

class Stu{
public:
	int no;
	string name;
	int score;
	Stu(int no=0,string name="",int score=0):no(no),name(name),score(score){}
	int operator<(const Stu& s)const{
		return score < s.score;
	}
};
int main(){
	priority_queue<Stu> que;
	que.push(Stu(110,"马云",90));
	que.push(Stu(120,"马化腾",89));
	que.push(Stu(130,"马超",98));
	que.push(Stu(140,"马哥",70));
	while(!que.empty()){
		cout << que.top().score << endl;
		que.pop();
	}
	//priority_queue<int> pq;
	//priority_queue<int,vector<int> > pq;
	//priority_queue<int,list<int> > pq;
	priority_queue<int,deque<int>,Com> pq;
	
	pq.push(5);
	pq.push(2);
	pq.push(7);
	pq.push(3);
	pq.push(9);
	pq.push(8);

	cout << pq.size() << endl;
	cout << pq.top() << endl;
	
	while(!pq.empty()){
		cout << pq.top() << " ";
		pq.pop();
	}
	cout << endl;

	return 0;	
}

标签:priority,pq,Stu,STL,queue,int,que,push,include
来源: https://blog.csdn.net/Nire_Yeyu/article/details/100994557

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有