关于优先队列(priority_queue)的使用

#include<iostream>
#include<stdio.h>
#include<queue>
using namespace std;
struct Node  {  //结构体 
    int value;//值
    int key;  //编号
    friend bool operator < (Node n1,Node n2)  {  //重载操作符,其中的<不能改变 friend bool operator < (){}
        return n1.value < n2.value;  //最大优先队列,类似的还有最小优先队列把小于改为大于 
    }
};
int main(){
	//优先队列基本操作
	//示例一:
	priority_queue<int> pq1;//默认为大元素优先priority_queue<> 
	pq1.push(6);pq1.push(9);pq1.push(2);pq1.push(8);pq1.push(1);//入队列
	while(!pq1.empty()){//判断是否为空 
		printf("%d ", pq1.top());//取队首 
		pq1.pop();//出队列 
	}
	printf("\n");
	//示例二:
	priority_queue<int, vector<int>, greater<int> > pq2;;//小元素优先 priority_queue< , vector<>, greater<> >
	pq2.push(6);pq2.push(9);pq2.push(2);pq2.push(8);pq2.push(1);//入队列
	while(!pq2.empty()){//判断是否为空 
		printf("%d ", pq2.top());//取队首 
		pq2.pop();//出队列 
	}
	printf("\n");
	int i;
	//示例三:
	Node b[5];
	b[0].value = 6; b[0].key = 1; 
    b[1].value = 9; b[1].key = 2; 
    b[2].value = 2; b[2].key = 3; 
    b[3].value = 8; b[3].key = 4; 
    b[4].value = 1; b[4].key = 5; 
	priority_queue<Node> Heap;	//最大优先队列
	for(i = 0;i < 5;i++){	//入队列
		Heap.push(b[i]);
	}
	printf("最大优先队列:\n");
	while(!Heap.empty()){	//出队列
		printf("key:%d value:%d\n",Heap.top().key,Heap.top().value);
		Heap.pop();
	}
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值