排序对象指针的向量

时间:2017-04-20 06:07:02

标签: c++ sorting pointers vector

我正在编写一个GradeBook类,其中包含指向StudentInfo类对象std::vector <StudentInfo*> students;的指针向量,我想使用<algorithm>排序函数对其进行排序,并通过其字符串数据评估每个对象会员学生ID。从堆栈溢出的其他帖子,我觉得我得到了我需要做的主旨 首先,我重载了运算符&lt;在StudentInfo中:

bool StudentInfo::operator<(const StudentInfo & right) const
{
    return (this->getStudentID() < right.getStudentID());
}

这似乎工作正常 然后我在GradeBook课程中定义了一个比较函数:

bool GradeBook::CompareStudents(const StudentInfo* left, const StudentInfo* right) const
{
    return (*left < *right);
}

当我独立尝试时,这似乎工作得很好 似乎引发我的是当我尝试使用带有CompareStudents函数的sort函数作为第三个参数时告诉它如何比较指向对象的指针(使用StudentID数据成员)。

sort(students.begin(), students.end(), CompareStudents);

我在堆栈溢出和其他地方发现了几个看起来相似的例子,但我一定做错了,因为我一直有错误:

1) 'GradeBook::CompareStudents': non-standard syntax; use '&' to create a pointer to member
2) 'sort': no matching overloaded function found
3) 'void std::sort(_RanIt,_RanIt)': expects 2 arguments - 3 provided

如果我放弃了CompareStudents部分而只是写sort(students.begin(), students.end())它运行正常,但只是比较那些不是我想要的行为的指针。

我正在运行Visual Studio Community 2015,如果这很重要的话。如果这令人困惑,我可以发布我的整个.h和.cpp文件。

0 个答案:

没有答案