这个问题如果出现你在使用set或者其他会自动排序的模板时,如果使用了结构体(或其他模板没有定义对其的排序方法的类型),那么很大概率编译器会这样报错
struct student
{
int id;
string name;
int english, math, c;
int total;
}
你给人家模板丢了一个结构体,人家肯定不知道是按照哪个变量排序,所以就会问你,“我该按啥顺序排鸭?”。这时候我们只需在结构体里面加上一个重构的“<”符号就可以了,其中写排序的算法(就同cmp函数差不多)
struct student
{
int id;
string name;
int english, math, c;
int total;
bool operator<(const student &stu) const
{
return id < stu.id;
}
};
这样就编译器就明白,需要按照ID排序,从而解决这个问题了。