【发布时间】:2013-08-17 14:04:52
【问题描述】:
我已经看到,如果你有operator<,你可以将operator>= 实现为!(a < b)。但是,当我去布里斯托尔的 C++ 委员会时,他们说您可以通过这种方式实现 all 比较运算符。特别是,当考虑具有非平凡比较运算符的类型时(考虑一个任意长的字符串,特别是如果这是 Unicode),这可以通过调用operator< 来完成。我无法想象这是怎么做到的。
我怎样才能实现operator> 和operator<= 只调用一次operator< 而没有调用其他比较运算符?
【问题讨论】:
-
我不确定
<但std::rel_ops可以用==和<完成它们 -
和你自己的例子一样:
a > b等于!(a == b || a < b)。一键呼叫操作员<.> -
这也涉及对 operator== 的一次调用,这显然不如自定义运算符的性能>.
-
正如我所说,这是对操作员的一次调用
-
@Jongware:是的。我的示例表明我想要一些对性能敏感的东西,但措辞只明确说明了 operator
标签: c++ comparison