如果我在一个集合上循环,并且想要获得当前元素迭代器和下一个元素迭代器,那么如何在不使用 next()的情况下做到这一点?
for(auto it = setOfObjects().begin(); it != setOfObjects().end(); ){
auto current = *it;
auto next = // ?
}
答案 0 :(得分:0)
我认为您只需在代码中添加另一个迭代器prev
,其逻辑将是:
set<int> setOfObjects;
for(auto it = setOfObjects.begin(), previt = it++ ; it != setOfObjects.end(); ++it, ++previt){
auto prev = *previt; //which is current
auto current = *it; //and this was next
}
答案 1 :(得分:-1)
可以按照与指针算术相同的方式检查迭代器,如下所示
auto next = *(it + 1);
请注意,这将需要处理以下情况:当前是最后一个元素,这样就不会越过迭代器