如何解决"expected a ; "向量排序时的错误?



我正在尝试使用排序方法对向量进行排序。

这是我的代码

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

相关内容

  • 没有找到相关文章

最新更新