преемник итератора - PullRequest
       20

преемник итератора

7 голосов
/ 17 января 2011

Я хочу инициализировать итератор (произвольного вида) с преемником другого итератора (того же типа). Следующий код работает с итераторами произвольного доступа, но не работает с прямыми или двунаправленными итераторами:

Iterator i = j + 1;

Простой обходной путь:

Iterator i = j;
++i;

Но это не работает как init-stament цикла for. Я мог бы использовать шаблон функции, подобный следующему:

template <typename Iterator>
Iterator succ(Iterator it)
{
    return ++it;
}

и затем используйте его так:

Iterator i = succ(j);

Есть ли что-то подобное в STL или Boost, или есть еще лучшее решение, о котором я не знаю?

1 Ответ

14 голосов
/ 17 января 2011

Я думаю, что вы ищете next в Boost.Utility .Также имеется prior для получения итератора для предыдущего элемента.

Обновление:

C ++ 11 введено std::next и std::prev.

...