Для цикла on set - получить следующий итератор элемента

Если я зацикливаюсь на наборе, и мне бы хотелось получить текущий итератор элементов и итератор следующего элемента, как я могу это сделать без использования next () ?

for(auto it = setOfObjects().begin(); it != setOfObjects().end(); ){
            auto current = *it;
            auto next = // ?

}

Всего 2 ответа


Я думаю, вам нужно добавить еще один итератор к вашему коду, и логика будет:

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
}

Итераторы могут быть исследованы таким же образом, как и арифметика указателя, как показано ниже

auto next = *(it + 1);

Обратите внимание, что для этого потребуется некоторая обработка случая, когда current является последним элементом, поэтому вы не переступаете итератор


Есть идеи?

10000