矢量排序有对象吗?( vector sort with objects?)

2019-07-17 16:52发布

因此,在头的C ++文档中有一个很好的功能,可以让你排序向量。 我有一类Person 。 我有一个指针的指向这个类(的对象矢量vector<Person*>我想通过不同的参数,人们比较例如年龄,姓名的长度等等。

我已经有这返回所需的变量函数,但我不知道该怎么做。 下面是在c排序矢量函数的链路++参考http://www.cplusplus.com/reference/algorithm/sort/

Answer 1:

这是如此简单:

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);

学生将alphabatically排序。 如果两个学生有同样的名字,他们会用他们的等级进行排序。



Answer 2:

尝试重写操作者像“<”,“>”使用的对象的相同的属性。 在此之后,你可以重新定义了某种操作。



文章来源: vector sort with objects?