1.priority_queue
(1)基本类型
最大优先队列:
priority_queue<int> q;
priority_queue<int,vector<int> > q;
priority_queue<int,vector<int>,less<int> > q;
最小优先队列:
priority_queue<int,vector<int>,greater<int> > q;
http://www.cplusplus.com/reference/queue/priority_queue/
(2)自定义类型
重载:
//最大堆 struct Node { int key; }; bool operator<(Node a,Node b) { return a.key<b.key; } priority_queue<Node> q;
仿函数:
//最大堆 struct Node { int key; }; struct cmp { bool operator()(Node a,Node b) { return a.key<b.key; } }; priority_queue<Node,vector<Node>,cmp> q; //最小堆 struct Node { int key; }; struct cmp { bool operator()(Node a,Node b) { return a.key>b.key; } }; priority_queue<Node,vector<Node>,cmp> q;
2.heap
make_heap(),push_heap(),pop_heap(),sort_heap()
http://www.cplusplus.com/reference/algorithm/push_heap/