如何在不修改当前迭代器的情况下在循环中获取下一个/上一个迭代器?我无法使用operator++
或operator--
因为这会干扰循环的实际迭代。
如果我在迭代数组索引i
,我可以说A[i+1] = A[i]
而不实际修改i
。我如何为迭代器做等效的工作?
答案 0 :(得分:3)
如果是C ++ 11,请使用std::next()
:
auto it = ...;
auto next_it = std::next(it); // doesn't modify 'it'
如果是C ++ 03,请根据std::advance()
编写自己的std::next()
:
template<class ForwardIt>
ForwardIt next(ForwardIt it,
typename std::iterator_traits<ForwardIt>::difference_type n = 1)
{
std::advance(it, n);
return it;
}
请注意,如果您的迭代器是随机访问迭代器,您可以对数组索引执行相同的操作。那就是:
auto next_it = it + 1;
答案 1 :(得分:0)