仅在条件适用时进行排序 - std :: sort

时间:2014-01-12 08:14:14

标签: c++ sorting std

假设我必须按分数排列一个足球联赛表,如果两支球队之间的分数相等,则根据目标差异对它们进行排序。

std::sort与仿函数一起使用,我成功地按点对表格进行了排序。但是,我现在如何对具有类似点

的球队进行排序?

换句话说,我需要以某种方式使用sort并使其仅对具有相似点数的团队进行排序。有没有舒服的方法呢?

2 个答案:

答案 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);
}