C++ 尝试为排序(s,s&x2B;n,cmp)编写自定义cmp函数时显示的错误
最初我编写了一个长度为10000的结构数组,每个结构包含两个整数。然后我尝试使用函数sort()按变量“starttime”对它们进行排序。因此,我计划为sort()重写一个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; }
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.“代词”是的,您是对的,非常感谢。似乎我忘记了一些基本的编程原则…无论如何,非常感谢!!