很多时候我不得不使用一个自定义的比较函数进行排序。 我可以实现它,但有时我会犯错误。 有人能解释一下如果它返回true
会发生什么,如果它返回false
会发生什么?
我经常搞不清楚如果它返回true
,那么它将被交换还是不被交换?
那是无关紧要的,你也不需要知道。
唯一相关的是,当且仅当第一个参数严格小于第二个参数时,比较器才应返回true
(即,它应该在排序之前,之后)。 换句话说,它应该返回与<
逻辑上相同的结果。
自定义比较函数不交换东西,也不发出什么时候应该发生交换的信号。 这是算法的工作,你不需要担心。
自定义比较函数比较事物。 它是告诉算法哪些元素被认为“少于”其他元素的方式。 这就是它需要你告诉它的全部,为了让它走出去,做它的工作排序。
阅读文档/你的书,了解你使用的函数。 std::sort
的要求可以免费学习:
comp
:比较函数对象(即满足compare
要求的对象),如果第一个参数小于(即在第二个参数之前排序),则返回true
。