对两个向量进行最优迭代
iterating over two vectors optimally
我有两个向量,每个向量包含50k个对象,表示从日志文件中提取的数据。每个对象包含时间戳、设备名称和链接名称。一个向量(down)包含linkdown对象,另一个向量(ups)包含linkup对象。我需要找到每个设备的链接停机时间,所以我迭代down向量并检查up向量,以查看是否(uptime>停机时间)。Up_device == down_device &Up_link == down _link)。内循环每次都从顶部开始,这使得停机时间计算在迭代down向量时变慢。下面是循环:
for(link_iter p = downs.begin(); p!=downs.end(); ++p){
for(link_iter q = ups.begin(); q!=ups.end(); ++q){
if(q->time > p->time && q->dev == p-> dev && q->link == p->link){
downtimes.push_back(downtime(q->time - p->time, q->dev, q->link));
break;
}
}
}
是否有一种方法可以让q和p一起前进,这样q就不会在每次p增加的时候开始?还是有更好的方法?非常感谢!
发布OP评论:
非常感谢OMGtechy和Cameron ..我已经按照建议修改了。我读取日志文件,如果我得到一个down事件,我push_back到down向量,但如果我得到一个up,我反向迭代下来找到第一个匹配的设备和链接。然后我创建停机时间并将其推回停机时间。再次感谢您的帮助,非常感谢!
相关文章:
- C++11 迭代向量的新方法?
- 迭代向量以获得搜索功能
- 为什么迭代向量在 c++ 中给出固定地址?
- 如何从向量映射中迭代向量
- 我怎样才能在不重复的情况下随机迭代向量的每个元素
- 是否有用于迭代向量的函数,而不管其类型如何?
- 您可以在一段时间内迭代向量
- 迭代向量向量中的第 i 行
- 指针的迭代向量会导致分段错误
- 使用一个迭代器迭代向量的向量
- 迭代向量时跳过行
- 迭代向量以更新word_counter
- 迭代向量中属性具有特定值的元素范围
- 在C++中迭代向量
- 在迭代向量的 for 循环中无效使用非静态数据成员
- 在C++中迭代向量
- 迭代向量时陷入无限循环的问题
- 迭代向量字符串的字符(C++禁止指针和整数之间的比较)
- 在 c++11 中,迭代向量的最现代、最"right"的方法是什么
- 5秒内迭代向量5