在函数完全处理后将所有元素添加到vector中
Adding all elements into a vector after the function is fully processed
简要说明:我编写了一个程序,实现了一个事件驱动的银行出纳员模拟。程序从到达和交易时间的输入文件中读取数据。文件的每一行都包含客户的到达时间和所需的事务时间。
我的问题:如果输入文件中的到达事件没有按升序排序,我希望程序打印出哪个客户出了问题。为此,我创建了一个矢量,并将所有到达事件存储到矢量中,如下所示:
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]中。大小为n
的vector
由0
变为n-1
。
注意*i == myVector[i-myVector.begin()]
和*myVector.begin() == myVector[0]
,因此您可以使用该公式有效地计算客户的索引。
相关文章:
- 使用std::transform将一个范围的元素添加到另一个范围中
- 如何将元素添加到数组的线程安全函数?
- 如何将元素添加到向量的字符串位置
- 将数组的元素添加到链表中
- 如何在C++中将元素添加到非固定大小的数组中?
- 如何使用模板根据类型将元素添加到各种容器中
- 将在堆栈上声明的元素添加到静态数组
- 有什么方法可以将元素添加到列表中,如图所示?
- 继承层次结构并将元素添加到向量
- gStreamer 将元素添加到通过 gst_parse_launch 创建的管道中
- 将新元素添加到列表中,并返回对该元素的引用?
- 将元素添加到 std::list 在多线程中,无需 C++ 互斥锁
- C++如何通过超出大小将元素添加到指针数组中
- 将集合的随机元素添加到列表中,然后将其从原始集合中移除
- 将字符串集合中的元素添加到字符串集合的向量中
- 为什么 memcpy() 是一种将元素添加到 'std::map' 的方法?
- 如何有条件地将元素添加到 std::array - C++11
- 如何在 c++ 中将元素添加到数组的最后一个
- 如何使用<<运算符将元素添加到向量?
- 将元素添加到结构向量的全球向量中