中級篇 優先佇列

2021-07-08 19:18:12 字數 1327 閱讀 7354

優先佇列與一般佇列不同,插入新元素時不是直接將新元素插入到隊尾,而是根據優先順序插入到其所在優先順序的相應位置。

優先佇列分為兩種:最大優先佇列和最小優先佇列。故每次取出的是佇列中最大優先順序和最小優先順序。可以根據預設的優先順序排序也可自定義優先順序排序。

所需標頭檔案:「queue.h」和「functional.h」。

一、優先佇列支援的操作

q.size();  //返回佇列元素個數

q.empty(); //佇列是否為空,空返回true,否則返回false

q.pop(); //刪除隊首元素,不返回其值

q.push(x); //將元素x按優先順序插入佇列

q.top(); //返回隊首元素但不刪除

二、常見的幾種優先佇列用法

(1)按預設優先順序

priority_queueque;

定義乙個名為que的int型優先佇列,按照系統預設的優先順序進行排序。

(2)自定義公升序優先順序

定義方法有兩種:1.採用結構體定義。2.採用functional標頭檔案內定義。

//採用結構體定義公升序

struct cmp1

;//採用functional內定義

struct num1

};

推薦使用結構體定義,簡單易懂!

(3)定義降序優先順序

同樣有結構體定義和functional內定義。

//採用結構體定義降序

struct cmp2

};//採用functional內定義

struct num2

//內定義插入

for(int i=0;num1[i].x;i++)

que3.push(num1[i].x);

for(int i=0;num2[i].x;i++)

que4.push(num2[i].x);

分別輸出que1,2

cout<<"輸出que1:";

while(!que1.empty())

}a[50005];

priority_queueque;//在pa結構體的基礎上建立佇列que

int cmp1(const pa&a,const pa&b)

sort(a,a+n,cmp1);

que.push(a[0]);

b[a[0].x]=1;

int cnt=1;

for(int i=1;it)

else

que.push(a[i]);

}cout<

gitlab 漢化 中級篇

檢視版本 cat opt gitlab embedded service gitlab rails version新建乙個資料夾 mkdir gitlab zn cd gitlab zn在本地 clone 倉庫 git clone ll 發現有乙個gitlab資料夾 匯出 patch 用的 diff...

爬蟲pyquery中級篇

一 遍歷 1 點睛 pyquery的選擇結果可能是多個節點,也可能是單個節點,型別都是pyquery型別,並沒有返回像beautiful soup那樣的列表。2 單節點 2.1 html from pyquery import pyquery as pq doc pq html li doc ite...

結構體中級篇

完整的結構體筆記 1.以另乙個結構體變數為資料成員 2.以另乙個結構體指標為資料成員 不常見的寫法1 struct a a結構體中直接巢狀乙個b結構體 int main 可以不使用第二個結構體變數就可以直接賦值 printf d t d n aobject.age,aobject.num struc...