<algorithm>带对象的矢量排序?</algorithm>

时间:2012-12-29 11:47:39

标签: c++ algorithm class sorting vector

因此,在标题中的c ++文档中有一个很好的函数,可以让你对向量进行排序。我有一个班级Person。我有一个指向该类对象的指针向量(vector<Person*>),我想用不同的参数比较人,例如年龄,姓名长度等。

我已经有了返回所需变量的函数,但我不知道该怎么做。以下是c ++参考http://www.cplusplus.com/reference/algorithm/sort/

中排序向量函数的链接

2 个答案:

答案 0 :(得分:14)

这很简单:

struct student
{
  string name;
  string grade;
};

bool cmd(const student & s1, const student & s2)
{
   if (s1.name != s2.name) return s1.name < s2.name;
   return s1.grade < s2.grade;
}

然后:

vector<student> s;
sort(s.begin(), s.end(), cmd);

学生将按字母顺序排序。如果两名学生姓名相同,他们将按照成绩订购。

答案 1 :(得分:-1)

尝试覆盖“&lt;”,“&gt;”之类的运算符使用对象的相同属性。之后,您可以重新定义某种排序操作。