Re: [问题] C++ 如何修改compare

楼主: LPH66 (-6.2598534e+18f)   2019-04-21 03:59:09
: 推 aa0917954358: 可以请教一下 overloading operator()跟operator< 04/20 22:36
: → aa0917954358: 当作compare function的概念差在哪里吗? 04/20 22:36
operator () 是比较者 (comparator) 的成员函式
这个比较者是一个"第三方"物件, 它会向被比较的人问资料来据以比对
operator < 是物件本身的成员函式
这是这个物件自己带有 < 的语意
那在呼叫算法时不写 comparator 就会使用标准默认的 std::less
std::less 做的事就是使用 < 来比较两个给定的物件
也就是说这是把比较的逻辑交给物件本身决定
====
operator < 由于是物件本身的成员, 带有"物件自己的性质"这个语意
因此只适合用在物件本身有个很强的排序性质的时候 (例如数字或字串)
其他的状况 (例如资料纪录) 本身没有很强的排序语意时
使用第三方比较者比较合适
也因为没有排序语意, 会很常发生排序依据会在不同次排序之间有所改变
使用比较者就很容易抽换不同的比较者达成更换排序依据的效果
作者: aa0917954358 (Doem)   2019-04-21 21:17:00
大致了解了 谢谢!

Links booklink

Contact Us: admin [ a t ] ucptt.com