【发布时间】:2011-01-24 01:10:27
【问题描述】:
在 C++/STL 中,排序仅使用小于运算符完成。虽然我不知道排序算法是如何实际实现的,但我假设其他操作是隐式创建的:
a > b *equals* b < a == true
a == b *equals* !(a < b) && !(b < a)
与使用三值*比较函数(例如 Java)相比,这对性能有好处吗?或者为什么做出这个设计决定?
我的假设是任何三值 compareto 函数仍然必须自己实现这些比较,从而获得相同的性能。
**通过三值比较函数,我的意思是一个比较函数,它返回-1、0和1代表小于、等于和大于*
更新:
似乎宇宙飞船 <=> 运算符将出现在 C++20 中,因此显然委员会认为仅使用 operator< 存在缺点。
【问题讨论】:
-
最近在 comp.lang.c++.moderated 上讨论过这个问题:groups.google.com/group/comp.lang.c++.moderated/browse_frm/…
标签: c++ sorting stl operator-overloading spaceship-operator