假设我必须按分数排列一个足球联赛表,如果两支球队之间的分数相等,则根据目标差异对它们进行排序。
将std::sort
与仿函数一起使用,我成功地按点对表格进行了排序。但是,我现在如何对具有类似点的
换句话说,我需要以某种方式使用sort并使其仅对具有相似点数的团队进行排序。有没有舒服的方法呢?
答案 0 :(得分:3)
在比较函数中,如果true
,请先返回lhs.points < rhs.points
。如果false
,请返回rhs.points < lhs.points
。如果你已经达到这一点,你知道点数是相等的(如果没有,函数已经返回),所以你可以返回lhs.goals < rhs.goals
。
答案 1 :(得分:3)
重载运算符<
bool operator < (const team& A, const team& B) //team is a struct of points and goals
{
if (A.points != B.points) return (A.points < B.points);
else return (A.goals < B.goals);
}