優先佇列是佇列的一種,不過它可以按照自定義的一種方式(資料的優先順序)來對佇列中的資料進行動態的排序,每次的push和pop操作,佇列都會動態的調整,以達到我們預期的方式來儲存。
定義:
priority_queue p;//最大值優先,是大頂堆一種簡寫方式
priority_queue,greater>q1;//
最小值優先,小頂堆
priority_queue,less >q2;//
最大值優先,大頂堆
在使用時,我們會有很多時間用到根據結構體的某乙個元素進行排序,下面給出定義結構體的優先順序比較方式
structnode
} stu;
//定義結構體變數
這樣直接可以:
priority_queue
q;
操作**:
#include #includeusing
namespace
std;
/*priority_queuep;//最大值優先,是大頂堆一種簡寫方式
priority_queue,greater>q1;//最小值優先,小頂堆
priority_queue,less>q2;//最大值優先,大頂堆
empty( ) //判斷乙個佇列是否為空
pop( ) //刪除隊頂元素
push( ) //加入乙個元素
size( ) //返回優先佇列中擁有的元素個數
top( ) //返回優先佇列的隊頂元素
優先佇列的時間複雜度為o(logn),n為佇列中元素的個數,其訪問都需要時間。
*//*
struct node stu;
struct cmp }*/
struct
node
} stu;
intmain() ;
for(int i = 0; i < 5; i++)
p.push(a[i]);
while(!p.empty())
return0;
}
STL模板整理 list
list容器是一種序列式容器,它是stl實現的雙向鍊錶,與vector相比它可以實現快速的插入和刪除,但是不能夠快速的隨機訪問。include list 宣告乙個空列表 list n 宣告乙個有n個元素的列表,每個元素都是由其預設建構函式t 構造出來的 list n,val 宣告乙個由n個元素的列表...
STL模板整理 set
set作為乙個容器也是用來儲存同一資料型別的資料型別,並且能從乙個資料集合中取出資料,在set中每個元素的值都唯一,而且系統能根據元素的值自動進行排序。應該注意的是set中數元素的值不能直接被改變。1.begin 返回指向第乙個元素的迭代器 2.clear 清除所有元素 3.count 返回某個值元...
STL模板整理 vector
1 c 標準模板庫與c 標準庫的關係 c 標準模板庫其實屬於c 標準庫的一部分,c 標準模板庫主要是定義了標準模板的定義與宣告,而這些模板主要都是 類模板,我們可以呼叫這些模板來定義乙個具體的類 與之前的自己手動建立乙個函式模版或者是類模板不一樣,我們使用了 stl就不用自己來建立模板了,這些模板都...