【问题标题】:iterator successor迭代器后继者
【发布时间】: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,而不是循环体本身。
  • 我明白了;这是有道理的。

标签: c++ boost stl iterator


【解决方案1】:

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

更新:

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

【讨论】:

  • 为了完整性,还有prev :)
  • @Matthiew M.:我想你的意思是prior。在我的链接里。现在我在我的回答中添加了它的提及。
  • next 现在是 C++11 的一部分 en.cppreference.com/w/cpp/iterator/next
猜你喜欢
  • 2016-10-22
  • 1970-01-01
  • 1970-01-01
  • 2020-11-09
  • 2011-01-26
  • 1970-01-01
  • 1970-01-01
  • 2017-07-26
  • 2016-12-27
相关资源
最近更新 更多