本文整理汇总了C++中QNode::setDuration方法的典型用法代码示例。如果您正苦于以下问题:C++ QNode::setDuration方法的具体用法?C++ QNode::setDuration怎么用?C++ QNode::setDuration使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类QNode
的用法示例。
在下文中一共展示了QNode::setDuration方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: customer_arrived
void customer_arrived()
{
cout << "======================一位客户到达======================" << endl;
//处理客户到达事件,en.NType=0
QNode *qe = new QNode(); //客户到达时间,处理业务所需要的时间,指向下一个对象
int durtime, intertime; //一个是处理业务所需要的时间,一个是下一个客户到达的所需时间
++CustomerNum; //人数++
//参数两个随机数,代表处理业务需要的时间,下一个客户到达的时间
durtime = rand() % (MAX_TIME + 1); //这个额是[0 ~ MAX_TIME(30)]
intertime = rand() % (INTERVAL + 1); //这个是下一个客户进入银行要等待的时间[0~INTERVAL(5)]
//如果银行没有关门,我们要产生下一个事件到达
int t = en.getOccurTime() + intertime;
if (t < closeTime)
{
//插入事件表下一个事件
Event ei;
ei.setOccurTime(t);
ei.setNType(0);
ev.insert(ei);
}
int i = min_queue(q); //求得最短的队列,注意我们有1到4队列,没有0队列
//吧事件插入到最短的队列中
//首先我们的事件发生时间(事件到达时间)和执行时间
qe->setArrivalTime(en.getOccurTime());
qe->setDuration(durtime); //时间的执行时间
q[i]->enQueue(qe); //吧qe插入到链表中
//判断我们插入的队列是不是长度是1,如果是代表在插入之前这个窗口是空的,这个的作用
//客户离开事件,是要首先计算该客户在银行逗留的时间,然后从队列中删除该客户之后查看队列是否为空,若不为空则设定一个新的对头客户离开事件
en.setOccurTime(en.getOccurTime() + durtime); //设置新的时间到达事件
en.setNType(i); //0代表新的客户到达,1是1号窗口客户离开,2是2号窗口客户离开,3是3号窗口客户离开,4是。。。,这里是客户到达事件,所以是0
if (q[i]->length() == 1)
{
//吧第i个队列的离开事件插入事件表,等会用来计算窗口的客户总时间
ev.insert(en);
}
}//customer_arrived()