⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 event.h

📁 《Big C++ 》Third Edition电子书和代码全集-Part1
💻 H
字号:
#ifndef EVENT_H
#define EVENT_H

#include <vector>
#include <queue>

using std::priority_queue;
using std::vector;

/**
   A single event for a discrete event driven simulation.
*/
class Event 
{
public:
   Event(int t);

   /**
      Perform one event in the simulation.
   */
   virtual void do_event() = 0;

protected:
   friend class EventComparison;
   int time;
};

/**
   Compare two events based on their time.
*/
class EventComparison 
{
public:
   bool operator()(const Event* left, const Event* right) const;
};

inline int rand_int(int a, int b)
{
   return a + rand() % (b - a + 1);
}

inline Event::Event(int t) : time(t) {}

inline bool EventComparison::operator()
   (const Event* left, const Event* right) const
{
   return left->time > right->time;
}

/**
   Simulation framework for event driven simulation.
*/
class Simulation 
{
public:
   /**
      Add new event to simulation.
      @param new_event the event to add
   */
   void schedule_event(Event* new_event);

   /**
      Run the simulation through all events.
   */
   void run();
private:
   priority_queue<Event*, vector<Event*>, EventComparison> event_queue;
};

inline void Simulation::schedule_event(Event* new_event)
{ 
   event_queue.push(new_event); 
}

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -