Для цикла на множестве - получить следующий элементный итератор - PullRequest
0 голосов
/ 31 октября 2018

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

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

}

Ответы [ 2 ]

0 голосов
/ 31 октября 2018

Я думаю, вам нужно добавить еще один итератор 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
}
0 голосов
/ 31 октября 2018

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

auto next = *(it + 1);

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...