我有一个IntRect的 vector :vector。

当迭代器相交时,如何从列表的两端进行迭代并停止迭代器?

vector<IntRect>::iterator itr = myVector.begin();
  vector<IntRect>::reverse_iterator revItr.rbegin();

  for (; /*check itr and revItr does not intersect, and itr and revItr do not end */ ; ++itr, ++revItr) {
    IntRect r1 = *itr;
    IntRect r2 = *revItr;

    // do something with r1 and r2

  }

谢谢。

最佳答案

if(!myVector.empty()) {
    for(vector<IntRect>::iterator forwards = myVector.begin(),
                                  backwards = myVector.end()-1;
        forwards < backwards;
        ++forwards, --backwards) {

            // do stuff
    }
}

我认为您需要使用该实现检查empty()-怀疑如果 vector 为空,则未定义end()-1。我以前没有使用过它,但是Dinkumware STL至少为 vector 迭代器定义了operator
还要注意,您需要检查
07-26 06:11