我有一个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 还要注意,您需要检查