在完全处理函数后,将所有元素添加到向量中

时间:2014-05-02 23:14:19

标签: c++ sorting events vector queue

简要说明:我写了一个程序,实现了一个有一个出纳员的银行的事件驱动模拟。程序从到达和交易时间的输入文件中读取数据。文件的每一行包含客户的到达时间和所需的交易时间。

我的问题:如果来自输入文件的到达事件未按升序排序,我希望程序打印哪个客户无序。为此,我创建了一个向量并将所有到达事件存储到向量中并执行此操作:

vector<int>::iterator i;
i = is_sorted_until(myVector.begin(), myVector.end());
if (i != myVector.end())
    cout << "The customer out of order is: " << (i - myVector.begin()) << endl;

问题是输入文件如下所示:

  

3 5
7 4
10 5
8 2
12 9

如果您注意到,第一列中的第四位客户发生故障。

当程序运行时,输出为:

  

在时间处理到达事件:3
向量的大小   是:1
当时处理到达事件:7
。的大小   向量是:2
在时间处理出发事件:8
  在时间处理到达事件:10
向量的大小   是:3
当时处理到达事件:8
。的大小   向量是:4
客户乱序是:3
处理一个   到达事件的时间:12
向量的大小是:5
  客户故障是:3
按时处理出发事件:   12
当时处理出发事件:17
处理a   出发事件的时间:19
当时处理出发事件:   28

如果您注意到,它表示客户无序是第三个客户,那是因为在处理到达事件时,向量中只有4个元素(3,7,10,5)。

有没有办法将所有到货事件添加到向量中,然后检查其中是否有任何故障,以免第四个客户出现故障?

1 个答案:

答案 0 :(得分:0)

第四个客户将进入myVector [3]。 vector的{​​{1}}大小n0升级到n-1

请注意*i == myVector[i-myVector.begin()]*myVector.begin() == myVector[0],因此您可以使用该等式有效地计算客户的索引。