【问题标题】:Iterate over vector efficently [duplicate]有效地迭代向量[重复]
【发布时间】:2018-12-25 12:18:21
【问题描述】:

我想遍历自定义结构“Edge”的向量。 我已经预先对属性权重的向量进行了排序。 有时我想停止迭代向量,计算其他东西。 当我再次遍历向量时,我想从最后访问的元素开始。

整数示例: 边缘:[0,1,2,3,4,5,6] 迭代:0,1,2 打破功能并计算其他东西 迭代:[3,4,5,6]

我想过保存一个vector::iterator。 将指向第一个元素的指针更改为 而是想要的元素,但我没有找到任何东西

谢谢。

【问题讨论】:

  • 那么你的问题是什么?
  • 请注意,如果完全调整矢量大小,矢量迭代器特别容易失效。
  • 这个问题与“重复标记”问题完全无关。这很棒。

标签: c++ vector iterator


【解决方案1】:

试试这样的:

for(int i = 0; i < vec.size(); i++) {
     do_work(vec[i]);
     if(i == breakPoint) {
         do_calculations();
     }
}

breakPoint 是一个 int 值,指示您要停止的索引。除非,打破功能真的很重要。然后你可以使用静态的i,但这可能会让你比我认为的更头疼

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-04
    • 2015-07-31
    • 1970-01-01
    • 2018-08-15
    • 2016-06-29
    • 1970-01-01
    相关资源
    最近更新 更多