最优地迭代两个向量

时间:2014-03-28 19:08:45

标签: c++

我有两个向量,每个向量包含50k个对象,表示从日志文件中提取的数据。每个对象都包含时间戳,设备名称和链接名称。一个向量(向下)包含linkdown对象,而另一个向量(向上)包含linkup对象。我需要找到每个设备的链接停机时间,所以我迭代向下向量并检查向量以查看是否(正常运行时间>停机时间&& up_device == down_device&& up_link == down _link)。内部循环每次都从顶部开始,这使得停机时间计算在迭代向下矢量时减慢。这是循环:

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;
      }
   }
} 

有没有办法用p推进q,所以每次p递增时,q不会在每次开始时开始?还是有更好的方法?任何帮助非常感谢!

1 个答案:

答案 0 :(得分:0)

发布OP评论:

非常感谢OMGtechy和Cameron ..i按照建议进行了修改。我读取了日志文件,如果我得到一个向下事件,我将push_back转入向量向量,但是如果我得到一个向上反向迭代迭代以找到第一个匹配的设备和链接。然后我创建停机时间和push_back进入停机时间。非常感谢您的帮助,非常感谢!