【发布时间】:2014-01-20 00:53:00
【问题描述】:
我必须对向量进行排序。该向量包含指向“学生”类对象的指针。
评分指标如下所示:
- 最好的最终成绩
- 如果最终成绩相同,则尝试次数更少
- 如果相同的尝试,更少的 id
- 0 次尝试的学生比 2 次尝试和期末 5 的学生差,将 0 次尝试的学生按较少的 id 排序
学生长这样:
private:
std::string name_;
int id_;
int attempts_; //max 2, if 0, exam not taken
int grade1_;
int grade2_;
int finalGrade_; // grade 5 for failed exam but still better than 0 attempts in rating
我的问题是我不知道如何处理尝试。因为最佳尝试次数是 1 次,并且比 2 次尝试次数要好。但 2 次尝试在评分中优于 0。
我希望你能理解我的问题并能帮助我。谢谢 :)
【问题讨论】:
-
您需要一种不同类型的容器,它可能是一个多映射或您有一个键和一个值的东西。
-
@user2485710:这不是真的,
sort可以采用任意复杂的比较函数。 -
@BenVoigt 我不认为
sort可以很好地处理多个字段,可能你想要一个稳定的排序。无论如何,我认为向量是错误的数据结构。 -
@user2485710:规则似乎防止出现平局(平局由 ID 打破,这可能是唯一的),因此排序的稳定性无关紧要。
-
@user2485710:问题已经说了。请注意,平局最终会出现在排序级别 3 和 4 中,它们会被 ID 打破。