優先隊列——priority_queue

優先隊列具有隊列的所有特性,包括基本操作,只是在這基礎上添加了內部的一個排序,它本質是一個堆實現的
定義:priority_queue<Type, Container, Functional> ,也可以不寫後兩部分內容,默認從大到小排序
Type 就是數據類型,Container 就是容器類型(Container必須是用數組實現的容器,比如vector,deque等等,但不能用 list。STL裏面默認用的是vector),Functional 就是比較的方式,當需要用自定義的數據類型時才需要傳入這三個參數,使用基本數據類型時,只需要傳入數據類型,默認是大頂堆

priority_queue:優先隊列,自動排序,默認爲優先級較高的在前,但是要注意的是,它對int型變量的默認排序是從大到小,因爲它認爲值越大,優先級越高,與sort排序剛好相反。
1.對int型變量
priority_queue<int, vector < int > ,less < int > >從大到小排列
priority_queue<int , vector < int >,greater< int> >從小到大排列

2.對結構體排序,要重載一下 " < ",只能重載小於號

從小到大排列

struct node
{
	int x,y;
};
bool operator <( const node & a, const node & b)//重載運算符
{
	if(a.x!=b.x) return a.x>b.x;
	else
	return a.y>b.y;
}
priority_queue <node > que ;

從大到小排列

struct node
{
	int x,y;
};
bool operator <( const node & a, const node & b)//重載運算符
{
	if(a.x!=b.x) return a.x<b.x;
	else
	return a.y<b.y;
}
priority_queue <node > que ;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章