前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >暑假(补)-6

暑假(补)-6

作者头像
AngelNH
发布2020-04-16 11:21:53
2910
发布2020-04-16 11:21:53
举报
文章被收录于专栏:AngelNI

非常希望在不远的明天,我的晚安可以亲口说,可以先亲一口再说。

优先队列

优先队列是什么呢?优先队列其实是一种特殊的队列,对队列的元素按照一定的先后顺序,队列自动排序,这就是优先队列。

话不多说直接上代码。

int ,double等

代码语言:javascript
复制
#include<iostream>
#include<queue>
using namespace std;
int main()
{
	priority_queue<int > q;
	q.push(4);
	q.push(10);
	q.push(6);
	q.push(1);
	q.push(15);
	while(!q.empty())
	{
		int a = q.top();
		cout<<a<<" ";
		q.pop();
	}
	return 0;
} 

// 结果为   15 10 6 4 1

我们发现对int的类型的数据默认从大到小排序,如果从小到大呢?这就需要我们重新定义优先队列的优先顺序,好像叫重载运算符。

好,我们现在开始重载”<”小于运算符。运用结构体重载。

输入 : 5 4 3 2 1

输出 :1 2 3 4 5

代码语言:javascript
复制
#include<iostream>
#include<queue>
using namespace std;
struct node
{
	int x;
	friend bool operator < (node a,node b)//friend 友元函数
	{
		return a.x > b.x;
	}
};
int main()
{
	priority_queue<node> p;
	node a;
	for(int i=5;i>=1;i--)
	{
		a.x =i;
		p.push(a); 
	}
	while(!p.empty())
	{
		int y = p.top().x;
		cout<<y<<" ";
		p.pop();
	}
	return 0;
}

以上就是优先队列对int的类型的队列优先级重载。

Array

如果对数组使用优先队列就比较简单了。

代码语言:javascript
复制
priority_queue<int ,vector< int  > , less< int > >  m;
priority_queue< int ,vector< int > , greater< int > > n;

以上就是对数组使用的优先队列,简单吧,就几行代码。

注意:这里有一个坑,一定要注意呦。”>>”编译器会把他识别为右移运算符,两个”>”号之间要有空格!!!

好了,上样例。

代码语言:javascript
复制
#include<iostream>
#include<vector>
#include<queue>
#include<cstdio>
using namespace std;
int a[5] = {10,2,69,100,-5};
int main()
{
	priority_queue<int ,vector<int >,less<int > > n;
	priority_queue<int ,vector<int >,greater<int > > m;
	for(int i =0;i<5;++i)
	{
		n.push(a[i]);
		m.push(a[i]);
	 } 
	while(!n.empty())
	{
		cout<<n.top()<<" ";n.pop();
		cout<<endl;
	}
	while(!m.empty())
	{
		cout<<m.top()<<" ";
		m.pop();
		cout<<endl;
	}
    return 0;
}

运行之后不难发现,less< int > 是从大到小排列。greater< int >是从小到大排列。

我目前就自学这么多,还有许多更高级的用法,后续默默的补上>>>>

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-10-23|,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 优先队列
    • int ,double等
      • Array
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档