【发布时间】:2011-01-17 18:11:23
【问题描述】:
我想用另一个迭代器(同类)的后继者来初始化一个迭代器(任意类型)。以下代码适用于随机访问迭代器,但适用于正向或双向迭代器:
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 中是否有类似的东西,或者是否有更好的解决方案我不知道?
【问题讨论】:
-
你说
Iterator i = j; ++i;在for循环中是不可能的——你能扩展一下吗?它应该在for循环中正常工作。 -
@Michael:我指的是
for (x; y; z)中的x,而不是循环体本身。 -
我明白了;这是有道理的。