std::advance 和 std::next 有什么区别?

新手上路,请多包涵

除了提前取负数之外,还有更多的东西吗?

原文由 Tavison 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 704
2 个回答

std::advance

  • 修改它的论点
  • 什么都不返回
  • 适用于输入迭代器或更好(如果给定负距离,则为双向迭代器)

std::next

  • 保持其论点不变
  • 返回参数的副本,按指定数量提前
  • 适用于前向迭代器或更好的迭代器(如果给定负距离,则为双向迭代器))

原文由 Benjamin Lindley 发布,翻译遵循 CC BY-SA 3.0 许可协议

也许最大的实际区别是 std::next() 仅适用于 C++11。

std::next() 默认前进1,而 std::advance() 需要距离。

然后是返回值:

std::next()std::advance 一样采用负数,在这种情况下要求迭代器必须是双向的。 std::prev() 当意图是专门向后移动时会更具可读性。

原文由 johnsyweb 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题