首页 > 解决方案 > 是否有理由使用 std::distance() 而不是 iterator::operator-()?

问题描述

我不确定为什么同时存在std::distance(iterator const&, iterator const&)iterator::operator-(iterator const&)(以及适配器operator-(iterator const&, iterator const&)),其中iterator是任何迭代器的占位符。应该使用其中一个而不是另一个,如果是,在什么情况下?

标签: c++c++-standard-library

解决方案


operator -不是大多数迭代器类型的成员,因此除非您的算法仅支持随机访问,否则一般使用它是错误的。

std::distance另一方面,知道迭代器类别,operator -如果可用,将使用它,如果不可用,它将使用N调用来operator --进行减法。


推荐阅读