如何解决排序向量时出现 "expected a ; " 错误?
How to solve "expected a ; " error when sorting a vector?
我正在尝试使用排序方法对向量进行排序。
这是我的代码
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);
我在 return
之前收到错误消息 expected a ';'
,知道为什么我会收到此错误消息吗?
您在另一个函数中定义了函数 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 );
}
我正在尝试使用排序方法对向量进行排序。
这是我的代码
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);
我在 return
之前收到错误消息 expected a ';'
,知道为什么我会收到此错误消息吗?
您在另一个函数中定义了函数 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 );
}