#include <iostream> #include <vector> #include <queue> using namespace std; class Timer; typedef Timer* RTimer; class Timer { public: Timer():_interval(),_expires_time(){} virtual ~Timer(){} ) { } 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 = ; Timer timer2; timer2._expires_time = ; Timer timer3; timer3._expires_time = ; _rtime_queue.push(&timer1); _rtime_queue.push(&timer3); _rtime_queue.push(&timer2); while(true) { ) { break; } RTimer r = _rtime_queue.top(); cout << "expire " << r->_expires_time << endl; _rtime_queue.pop(); } ; }
:-),记录一下!
stl 容器 优先级队列 指针