stl的优先级队列

#include <iostream>
#include <vector>
#include <queue>
using namespace std;

class Timer;

typedef Timer* RTimer;


class Timer
{
public:
    Timer():_interval(0),_expires_time(0){}

    virtual ~Timer(){}

    virtual void schedule_timer(int sec,int usec = 0)
    {

    }

    virtual long expires_time()
    {
        return this->_expires_time;
    }


    virtual long interval_time()
    {
        return this->_interval;
    }

public:

    long _interval;

    long _expires_time;

};


struct RTimerCmp
{
    bool operator()(RTimer left,RTimer right)
    {
        if(left->_expires_time == right->_expires_time)
        {
            return right->_expires_time > left->_expires_time;
        }
        else
        {
            return left->_expires_time > right->_expires_time;
        }
    }
};


std::priority_queue<RTimer,std::vector<RTimer>,RTimerCmp > _rtime_queue;

int main()
{
    Timer timer1;
    timer1._expires_time = 1;

    Timer timer2;
    timer2._expires_time = 2;

    Timer timer3;
    timer3._expires_time = 3;

    _rtime_queue.push(&timer1);
    _rtime_queue.push(&timer3);
    _rtime_queue.push(&timer2);

    while(true)
    {
        if(_rtime_queue.size() <= 0)
        {
            break;
        }
        RTimer r = _rtime_queue.top();
        cout << "expire " << r->_expires_time << endl;
        _rtime_queue.pop();
    }

    return 0;
}

:-),记录一下!

stl 容器 优先级队列 指针

转载于:https://www.cnblogs.com/archy_yu/p/3223134.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值