priorityu_queue是一个拥有权值观念的queue,它允许加入新元素,移除旧元素,审视新元素等功能
由于这是一个queue,所以只允许在底端加入元素,并从顶端取出元素,除此之外别无其他存取元素的途径
priority 带有其内的元素并非是依照被推入的顺序排列,而是自动依照元素的权值排列,权值最高者排在前面
缺省情况下priority_queue利用max-heap完成,可以满足priority_queue所需要的“依照权值高低自动递减排序”的特性
template <class T,class Sequence=vector<T>,class Compare=less<typename Sequence::value_type> >
public:
typedef typename Sequence::value_type value_type;
typedef typename Sequence::size_type size_type;
typedef typename Sequence::reference reference;
typedef typename Sequence::const_ference const_reference;
protected:
Sequence c;//底层容器
Compare comp;//元素大小比较标准
public:
priority_queue():c(){ }
explicit priority_queue(const Compare &x):c(),comp(x){}
//以下用到的make_heap,push_heap,pop_heap 都是泛型算法
template <class InputIterator >
priority_queue(InputerIterator first,InputerIterator last,const Compare &x)
:c(first,last),comp(x){make_heap