我想用另一个迭代器(同类)的后继者初始化一个迭代器(任意类型)。以下代码适用于随机访问迭代器,但不适用于前向或双向迭代器:
Iterator i = j + 1;
一个简单的解决方法是:
Iterator i = j;
++i;
但这不起作用初始化语句for 循环的。我可以使用如下所示的函数模板:
template <typename Iterator>
Iterator succ(Iterator it)
{
return ++it;
}
然后像这样使用它:
Iterator i = succ(j);
STL 或 Boost 中是否有类似的东西,或者是否有我不知道的更好的解决方案?
我想你正在寻找next在 Boost.Utility 中 http://www.boost.org/doc/libs/1_45_0/libs/utility/utility.htm#functions_next_prior。它也有prior
用于获取前一个元素的迭代器。
Update:
C++11 引入std::next http://en.cppreference.com/w/cpp/iterator/next and std::prev http://en.cppreference.com/w/cpp/iterator/prev.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)