1. 程式人生 > >PriorityQueue&&Function overload

PriorityQueue&&Function overload

esp c++的函數重載 cti net 如果 heap 一個 func ()

用 STL 裏面堆算法實現的與真正的STL裏面的 priority_queue用法相似的priority_queue

#include <iostream>
#include <algorithm>
#include <vector>

using namespace std;

class priority_queue
{
private:
vector<int> data;

public:
void push( int t ){
data.push_back(t);
push_heap( data.begin(), data.end());
}

void pop(){
pop_heap( data.begin(), data.end() );
data.pop_back();
}

int top() { return data.front(); }
int size() { return data.size(); }
bool empty() { return data.empty(); }
};


priority_queue常用的函數:

top:讀入頂端元素
pop:刪除頂端元素
size:返回元素個數
push:加入一個元素
empty:如果為空,返回true
優先級隊列(priority_queue)的實現方式是堆(heap), 默認是輸出最大值
輸出最小值, 需要指定參數, priority_queue<int, vector<int>, greater<int> >

#include <stdio.h>

#include <queue>
#include <vector>
#include <functional>

using namespace std;

int main(void)
{
priority_queue<int, vector<int>, greater<int> > pque;

pque.push(3);
pque.push(5);
pque.push(1);
pque.push(4);

while (!pque.empty()) {
printf("%d ", pque.top());
pque.pop();
}
printf("\n");

return 0;
}


C++的函數重載
http://www.cnblogs.com/skynet/archive/2010/09/05/1818636.html
http://www.cnblogs.com/yshl-dragon/archive/2013/05/10/3067161.html

PriorityQueue&&Function overload