優先佇列與一般佇列不同,插入新元素時不是直接將新元素插入到隊尾,而是根據優先順序插入到其所在優先順序的相應位置。
優先佇列分為兩種:最大優先佇列和最小優先佇列。故每次取出的是佇列中最大優先順序和最小優先順序。可以根據預設的優先順序排序也可自定義優先順序排序。
所需標頭檔案:「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...