永发信息网

C++ STL sort()函数

答案:2  悬赏:80  手机版
解决时间 2021-02-13 10:04
struct node
{
int size;
int speed;
int index;
int length;
};
node arr[1001];
bool cmp(const node &n1,const node &n2)
{
if(n1.size>n2.size)
return true;
else if(n1.speed>n2.speed)
return true;
else
return false;
}
然后在main()里面给 node arr[]数组(数组长度num)排序
sort(arr,arr+num,cmp);
总是会提示invalid operator < 然后就中断了

============================================
源程序如下:

#include
#include
using namespace std;
struct node
{
int size;
int speed;
int index;
int length;
};
node arr[1001];
bool cmp(const node &n1,const node &n2)
{
if(n1.size>n2.size)
return true;
else if(n1.speed>n2.speed)
return true;
else
return false;
}
int main()
{
int num=0;
while(scanf("%d%d",&arr[num].size,&arr[num].speed)!=EOF)
{
arr[num].index=num;
arr[num].length=1;
++num;
}
sort(arr,arr+num,cmp);
int loc=0;
for(int i=1;i {
for(int j=0;j {
if(arr[i].speedarr[j].size&&arr[i].length<=arr[j].length)
{
arr[i].length=arr[j].length+1;
if(arr[loc].length loc=i;
}
}
}
printf("%d\n",arr[loc].length);
}

那就奇怪了 我用的vs2005 逻辑判断出错 程序也不能崩溃啊

而且的确是运行sort()那句出现错误的呀~
最佳答案
你这部分没有问题
struct node
{
int size;
int speed;
int index;
int length;
};
node arr[1001];
bool cmp(const node &n1,const node &n2)
{
if(n1.size>n2.size)
return true;
else if(n1.speed>n2.speed)
return true;
else
return false;
}

定义了谓词,是正确的,

而且程序也可以运行,我在vc6下测试的,

你有错误的地方是在下面的逻辑判断

for(int i=1;i {
for(int j=0;j {
if(arr[i].speedarr[j].size&&arr[i].length<=arr[j].length)
{
arr[i].length=arr[j].length+1;
if(arr[loc].length loc=i;
}
}

最后能出结果.
全部回答
汗,程序真长啊
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
梦见女儿生了个女孩是怎么回事
在黄山微太平上发个招聘,怎么发
加装减震缓冲胶好不好,这个问题有什么好的解
高艺阳光幼儿园这个地址在什么地方,我要处理
办理青年黑卡之后还需要交年费吗?
狂剪专业理发地址好找么,我有些事要过去
梦三国怎么交易金币
一个除法等式里,被除数、除数、商和余数的和
方燕烤猪蹄(新郑店)这个地址在什么地方,我要
陕西省洋县,李恩准是什么职务
格莱美(左岸店)地址在什么地方,想过去办事
吴丘头地址在什么地方,想过去办事
30岁男人闲暇时间太多在家能学点什么
桂林火车站和火车南站有什么区别啊?
铁岭师范高等专科学校与锦州师范高等专科学校
推荐资讯
BB霜能过安检吗?也就是粉底液
美力源羊奶粉兴安NO.3在哪里啊,我有事要去这
你能看出这八个英灵是哪些人么
我2014年九月二十八号在农业银行定期了一年,
天元商务宾馆地址在什么地方,想过去办事
龙华哪个地铁靠近万家灯火?
下列各项,不属小儿遗尿临床意义的是()A.膀胱
一个月后打算要孩子!问下我现在想把头发帘拉
胖胖女人店地址在哪,我要去那里办事
机油超过上限1cm能开吗,有车友可以回答一下这
美国格耐超级2000快捷补漆地址在什么地方,想
Giant(捷安特)良乡专卖店地址有知道的么?有
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?