c++ stl之pirority_queue

1.模板原型

template<class T, class Sequence=vector<T>, class Compare=less<typename Sequence::value_type>>
class priority_queue
{
public:
    typedef typename Sequence::value_type value_type;
    typedef typename Sequence::size_type size_type;
    typedef typename Sequence::reference reference;
    typedef typename Sequence::const_reference const_reference;
protected:
    Sequence c;
    Compare comp;
public:
    priority_queue(): c() {};
    explicit priority_queue(const Compare& x): c(), comp() {}
    template<class InputInterator>
    priority_queue(InputIterator first, InputIterator last, const Compare& x):
    c(first, last), comp(x) {make_heap(c.begin(), c.end(), comp);}
    pirority_queue(InputItrator first, InputIterator last):c(first, last)
    {make_heap(c.begin(), c.end(), comp);}
    
    
};

我们看看我们的top是啥

const_reference top() const {return c.front();}

就是vector的头部,然后让咱们看看push是啥

void push(const value_type& x)
{
    __STL_TRY {
        c.push_back(x);
        push_heap(c.begin(), c.end(), comp);
    }

}

相当于重建了一个堆, 测试如下

()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值