【发布时间】:2014-08-12 18:35:10
【问题描述】:
我正在为我的工作开发一个小型库,并且我从标准 random-access iterator category 派生了一些类。这让我可以使用诸如迭代器特征之类的东西,并且当我使用像 algorithm 这样的标准库时不必太担心。当然我知道我不必这样做,我可以选择bidirectional category 来代替,甚至可以实现我自己的。但这不是重点。
IMO,双向和随机访问类别之间的“差距”太大,我不明白迭代器之间的减法和比较运算符 的必要性 - 即:@ 987654324@、a<b 和 a>b(及其松散的变体)。
为什么标准强制实施这些运算符,有人可以给我一个例子,说明(不)等式测试、混合迭代器标量算术(复合或非复合)运算符和偏移解引用运算符是不够的?
【问题讨论】:
-
在搜索算法中,您可能需要距离 (a-b)。在恒定时间内得到 a-b 后,你也会得到 。
-
不是
-pedantic,但在这种情况下正确的术语是category,而不是interface。此外,差异是鸭子类型与继承方法的漏洞点。 -
@Manu343726 查看更正后的帖子 :)
-
@Sh3ljohn:为什么查找两个位置之间的差异会返回位置而不是距离?减去两个点得到一个偏移量,减去两个时间点得到一个持续时间。
-
@Sh3ljohn 在数学中 (!) 声明
The difference between two points (maths) is a point是完全错误的
标签: c++ iterator random-access