我正在尝试使用排序方法对向量进行排序。
这是我的代码
bool compare(const student * a, const student* b)
{
return *a.mark < *b.mark || (a.mark == b.mark && a.name < b.name);
}
sort(total_student.begin(), total_student.end(), compare);
我在读expected a ';'
的return
之前收到错误,知道为什么我会收到这个错误吗?
您在另一个函数中定义了函数compare
,或者错误的原因是函数定义行之前的另一个语法错误。
您不能在另一个函数中定义一个函数。您可以定义一个lambda表达式来代替函数。
将函数定义放在命名空间中。
此外,由于成员访问不正确,函数定义无效。至少你应该写
bool compare(const student *a, const student *b)
{
return a->mark < b->mark || (a->mark == b->mark && a->name < b->name);
}
此外,你有一个指针向量,这看起来很令人困惑。如果您有一个student
类型的对象向量,那么函数定义将看起来像
bool compare(const student &a, const student &b)
{
return a.mark < b.mark || (a.mark == b.mark && a.name < b.name);
}
或者你可以写
#include <tuple>
//...
bool compare(const student &a, const student &b)
{
return std::tie( a.mark, a.name ) < std::tie( b.mark, b.name );
}