Если я зациклюсь на наборе, и я хотел бы получить текущий итератор элемента и следующий итератор элемента, как я могу сделать это без использования next () ?
for(auto it = setOfObjects().begin(); it != setOfObjects().end(); ){ auto current = *it; auto next = // ? }
Я думаю, вам нужно добавить еще один итератор prev в ваш код, и логика будет такой:
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 }
Итераторы можно исследовать так же, как арифметику указателей, как показано ниже
auto next = *(it + 1);
Обратите внимание, что это потребует некоторой обработки в случае, когда current является последним элементом, чтобы вы не переступали итератор