作者LPH66 (IS YOU)
看板C_and_CPP
标题Re: [问题] C++ 如何修改compare
时间Sun Apr 21 03:59:09 2019
: 推 aa0917954358: 可以请教一下 overloading operator()跟operator< 04/20 22:36
: → aa0917954358: 当作compare function的概念差在哪里吗? 04/20 22:36
operator () 是比较者 (comparator) 的成员函式
这个比较者是一个"第三方"物件, 它会向被比较的人问资料来据以比对
operator < 是物件本身的成员函式
这是这个物件自己带有 < 的语意
那在呼叫演算法时不写 comparator 就会使用标准预设的 std::less
std::less 做的事就是使用 < 来比较两个给定的物件
也就是说这是把比较的逻辑交给物件本身决定
====
operator < 由於是物件本身的成员, 带有"物件自己的性质"这个语意
因此只适合用在物件本身有个很强的排序性质的时候 (例如数字或字串)
其他的状况 (例如资料纪录) 本身没有很强的排序语意时
使用第三方比较者比较合适
也因为没有排序语意, 会很常发生排序依据会在不同次排序之间有所改变
使用比较者就很容易抽换不同的比较者达成更换排序依据的效果
--
'Oh, Harry, don't you
see?' Hermione breathed. 'If she could have done
one thing to make
absolutely sure that every single person in this school
will read your interview, it was
banning it!'
---'Harry Potter and the order of the phoenix', P513
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 123.195.192.32
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1555790351.A.9E5.html
1F:→ aa0917954358: 大致了解了 谢谢! 04/21 21:17