c++ - 是否有理由使用 std::distance() 而不是 iterator::operator-()?
问题描述
我不确定为什么同时存在std::distance(iterator const&, iterator const&)
和iterator::operator-(iterator const&)
(以及适配器operator-(iterator const&, iterator const&)
),其中iterator
是任何迭代器的占位符。应该使用其中一个而不是另一个,如果是,在什么情况下?
解决方案
operator -
不是大多数迭代器类型的成员,因此除非您的算法仅支持随机访问,否则一般使用它是错误的。
std::distance
另一方面,知道迭代器类别,operator -
如果可用,将使用它,如果不可用,它将使用N
调用来operator --
进行减法。
推荐阅读
- javascript - 为什么“ScrollIntoView”不能同时处理两个元素?
- node.js - Nodejs S3 上传列表 [0]" 参数必须是 Buffer 或 Uint8Array 的实例
- python - 使用 for 循环的无限循环问题
- python - 如何在使用 streamlit 和 PyTorch 开发的 heroku 应用程序中处理“超出内存配额”?
- python - 您好需要生成一些有效的日期格式
- python - 从can消息转换位数据
- scala - 为什么将 Seq 转换为 Set 然后在同一行上调用 map 无法编译
- javascript - 如何在不重复代码的情况下编写此函数,遵循 DRY 原则
- mysql - 创建提要 - 创建专用表或使用视图?
- javascript - Nest.js 数据库互操作性问题