C++ 尝试为排序(s,s&x2B;n,cmp)编写自定义cmp函数时显示的错误

C++ 尝试为排序(s,s&x2B;n,cmp)编写自定义cmp函数时显示的错误,c++,arrays,sorting,struct,C++,Arrays,Sorting,Struct,最初我编写了一个长度为10000的结构数组,每个结构包含两个整数。然后我尝试使用函数sort()按变量“starttime”对它们进行排序。因此,我计划为sort()重写一个cmp函数,然后出现错误。 以下是代码: struct time { int starttime=0; int endtime=0; } original[10000]; bool cmpl(time a, time b){ return a.starttime>b.starttime; }

最初我编写了一个长度为10000的结构数组,每个结构包含两个整数。然后我尝试使用函数sort()按变量“starttime”对它们进行排序。因此,我计划为sort()重写一个cmp函数,然后出现错误。 以下是代码:

struct time
{
    int starttime=0;
    int endtime=0;
} original[10000];

bool cmpl(time a, time b){
    return a.starttime>b.starttime;
}

int readandinit(){
    int st=0, et=0, counter;
    while (cin>>st>>et){
        if (st<0||et<0) break;
        original[counter].starttime=st;
        original[counter].endtime=et;
    }
    sort(original, original+counter, cmpl);
}

int main(){
    readandinit();
}
结构时间 { int starttime=0; int-endtime=0; }原件[10000]; bool cmpl(时间a、时间b){ 返回a.starttime>b.starttime; } int readandinit(){ int st=0,et=0,计数器; 而(cin>>st>>et){ 如果存在(st函数使解析不符合预期,则可以通过添加
struct
来修复此问题:

bool cmpl(struct time a, struct time b){
    return a.starttime > b.starttime;
}


(或选择另一个名称)

如果使用
使用名称空间std
,则缺少一个
#include
的加载。函数存在…
对于结构而言,如果使用
使用名称空间std
,则时间
不是一个很好的名称选择。这就是为什么不应该使用
名称空间std
。(即使没有使用命名空间std
,您也可能会遇到此错误,但更可能是这样)。您的结构名称与同名的全局函数冲突。@Jarod42:很好!@Jarod42和n.“代词”是的,您是对的,非常感谢。似乎我忘记了一些基本的编程原则…无论如何,非常感谢!!