优先级队列底层使用堆来实现。因为堆可以在O(1)的时间内找出优先级最高的元素。
代码如下:
#ifndef _PRIORITY_
#define _PRIORITY_
#include<iostream>
#include"../Heap/Heap.h"
using namespace std;
template<typename T,typename U>
class PriorityQueue{
public:
PriorityQueue():MyHeap()
{}
~PriorityQueue()
{}
PriorityQueue(const PriorityQueue>pq)
{
MyHeap=pq.MyHeap;
}
PriorityQueue>operator=(const PriorityQueue>pq)
{
if(&pq!=this)
{
MyHeap=pq.MyHeap;
}
}
size_t size()
{
return MyHeap.size();
}
bool empty()
{
return MyHeap.empty();
}
void push(const T>key,const U>value)
{
}
void pop()
{
}
U>top()
{
}
private:
heap<T> MyHeap;
};
#endif
以上
如果你有任何想法或是可以改进的地方,欢迎和我交流!
完整代码及测试用例在github上:点我前往
本文首发于www.sbrave.cn
【完】