1. 程式人生 > >優先佇列(基本)

優先佇列(基本)

優先佇列

1.簡介

普通的佇列是一種先進先出的資料結構,元素在佇列尾追加,而從佇列頭刪除。在優先佇列中,元素被賦予優先順序。當訪問元素時,具有最高優先順序的元素最先刪除。優先佇列具有最高階先出 (first in, largest out)的行為特徵。

 2.標頭檔案

#include<queue>  
using namespace std;

  3.宣告

宣告的話有兩種簡單的方式

priority_queue<inpriority_queue<int/*佇列型別*/,vector<int>/*儲存地址*/,less<int> >q;//優先返回最大值
priority_queue<inpriority_queue<int,vector<int>,greater<int> >q;//優先返回最小值

下面這種其實就是上面第一種的簡化版

priority_queue<int>q;

  4.基本操作

q.size();//返回q裡元素個數  
q.empty();//返回q是否為空,空則返回1,否則返回0  
q.push(k);//在q的末尾插入k  
q.pop();//刪掉q的第一個元素  
q.top();//返回q的第一個元素  
q.back();//返回q的末尾元素

最後附上一個程式

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cmath>
#include<cstring>
#include<string>
#include<queue>
#include<algorithm>
using namespace std;
int main() {
	priority_queue<int>q;
	q.push(1);
	q.push(30);
	q.push(12);
	q.push(5);
	while(!q.empty()){
		int n=q.top();q.pop();
		cout<<n<<" ";
	}
	return 0;
}

這個程式意思大概就是在這個優先佇列裡依次插入1、30、12、5,再輸出。

輸出:

30 12 5 1