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

Adding all elements into a vector after the function is fully processed

本文关键字:元素 添加 vector 函数 处理      更新时间:2023-10-16

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

我的问题:如果输入文件中的到达事件没有按升序排序,我希望程序打印出哪个客户出了问题。为此,我创建了一个矢量,并将所有到达事件存储到矢量中,如下所示:

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

如果您注意到,第一列中的第4个客户是错误的。

程序运行时,输出为:

在时间处理到达事件:3
向量的大小是:1
处理时间:7的到达事件
的大小向量为:2
处理时间:8
的出发事件在时间处理到达事件:10
向量的大小是:3
处理时间:8
的大小向量为:4
失序客户为:3
处理过程为
向量的大小为:5

处理一个离境事件的时间:12
在时间点处理离开事件:17
处理
处理时刻的出发事件:28日

如果您注意到,它说失序的客户是第三个客户,这是因为在处理到达事件时,向量中只有4个元素(3,7,10,8)。

是否有一种方法可以将所有到达事件添加到向量中,然后检查它们中的任何一个是否出了顺序,以便第四个客户出了顺序?

第四个客户将在myVector[3]中。大小为nvector0变为n-1

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