【发布时间】:2018-11-25 16:56:45
【问题描述】:
为什么不能使用较大的运算符作为比较?使用小于有什么特别的优势吗?
【问题讨论】:
-
所有其他 STL 工具使用小于。因此,编写了许多实现
operator<但不一定实现operator>的类。如果priority_queue不一致,那么如果没有额外的工作,它将无法用于此类类。所以基本上,它是为了最小化用户为了使用库而需要提供的界面的大小。 -
技术上没有优势。这只是为了一致性。此外,排序的最低要求是由一些排序关系定义的,STL选择了一些'form of'运算符
-
如果您想为所有运营商提供平等机会,请查看 boost 类模板
boost::less_than_comparable stackoverflow.com/questions/4589353/… -
只要运营商实施/实施严格的弱排序,
std::less和std::greater都可以是默认值。但是,你必须选择一个,而且大多数时候看起来更自然,所以这是一个理智的默认设置。如果需要,您可以随时覆盖它。
标签: c++ stl priority-queue