翻了很多部落格的總結
1、標頭檔案
#include
2、定義
[cpp]
view plain
copy
priority_queue<
int> p;
3、優先輸出大資料
priority_queue
type為資料型別, container為儲存資料的容器,functional為元素比較方式。
如果不寫後兩個引數,那麼容器預設用的是vector,比較方式預設用operator
例如:[cpp]
view plain
copy
#include
#include
using
namespace
std;
intmain()
return
0;
}
輸出:
4、優先輸出小資料
方法一:
[cpp]
view plain
copy
priority_queue<
int, vector<
int>, greater<
int> > p;
例如:[cpp]
view plain
copy
#include
#include
using
namespace
std;
intmain()
return
0;
}
輸出:
方法二:自定義優先順序,過載預設的 < 符號
例子:[cpp]
view plain
copy
#include
#include
#include
using
namespace
std;
struct
node
};
struct
cmp
};
intmain()//while
//getchar();
return
0;
}
輸出:
#include
#include
#include
using
namespace
std;
struct
package
; bool
operator
//自定義排序規則
intmain()
);tmp.push();
intsize = tmp.size();
while
(size--)
}以結構體time為例:
[cpp]
view plain
copy
struct
time;
使用優先佇列時,如果需要對time中的start從小到大排序,有兩種方法:
[cpp]
view plain
copy
priority_queuepq;
一.在結構體外過載結構體小於運算子:
[cpp]
view plain
copy
bool
operator
const
time& a,
const
time& b) //這裡以大於過載小於是因為預設情況下,優先佇列是以大的作為隊首,這樣一反,就可以再預設情況下使得小的作為隊首
二.直接在結構體中過載小於運算子:
[cpp]
view plain
copy
struct
time
};
實質上來說是一樣的。。。。
另外要注意的是:引數列表中的const不能省略,否則報錯~~
預設的優先佇列是個極大堆,如果要改變優先佇列中元素的優先順序,有下面這些方法
[cpp]
view plain
copy
struct
cmp1
};
struct
cmp2
};
struct
node1
};
struct
node2
};
priority_queue
>q1;
//採用預設優先順序構造佇列
priority_queue
,vector<
int>,cmp1>q2;
//最小值優先
priority_queue
,vector<
int>,cmp2>q3;
//最大值優先
priority_queue
,vector<
int>,greater<
int> >q4;
//注意「>>」會被認為錯誤,
//這是右移運算子,所以這裡用空格號隔開,最小值優先
priority_queue
,vector<
int>,less<
int> >q5;
//最大值優先
priority_queueq6; //自定義優先順序
priority_queueq7;
用二叉堆實現優先佇列 Priority Queue
優先佇列出隊跟佇列一樣,從隊首出隊 但隊內的次序由優先順序決定,即優先順序高的資料項可以插隊,排到前面。二叉堆能夠將優先佇列的入隊和出隊複雜度都保持在o logn 完全二叉樹,如果用順序表來表示的話,設根節點下標為1,若某節點下標為p,則其左子節點下標為2p,右子節點下標為2p 1,父節點下標為p ...
C STL的查詢演算法
假設你有乙個序列容器,或者有一對迭代器標識了乙個區間,現在你希望在容器中查詢一些資訊,這樣的查詢工作如何進行呢?你的選擇往往是 count,count if,find,find if,binary search,lower bound,upper bound,equal range.該如何選擇呢?現...
C STL容器的理解
1.容器 資料結構 演算法。相當於是為複雜的資料設計一種專門用於存放該資料的東西。用於開發中傳遞複雜的資料。2.模板函式只能寫在標頭檔案中,不能單獨宣告。3.stl容器分為三類 1 順序容器類 vector 陣列。查詢快,插入慢。加入的資料與資料大小有關 操作 empty 返回bool型,表示vec...