迭代器的继任者

时间:2011-01-17 18:11:23

标签: c++ boost stl iterator

我想用另一个迭代器(同类)的后继者初始化一个迭代器(任意类型)。以下代码适用于随机访问迭代器,但它使用正向或双向迭代器失败:

Iterator i = j + 1;

一个简单的解决方法是:

Iterator i = j;
++i;

但是这不能用作for循环的 init-stament 。我可以使用如下的函数模板:

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

然后像这样使用它:

Iterator i = succ(j);

在STL或Boost中有类似的东西,还是有更好的解决方案我不知道?

1 个答案:

答案 0 :(得分:14)

我认为你正在寻找next in Boost.Utility。它还有prior来获取前一个元素的迭代器。

更新

C ++ 11引入了std::nextstd::prev