C++ STL sort()函数

structnode{intsize;intspeed;intindex;intlength;};nodearr[1001];boolcmp(constnode&n1,c... 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<iostream>
#include<algorithm>
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<num;++i)
{
for(int j=0;j<i;++j)
{
if(arr[i].speed<arr[j].speed&&arr[i].size>arr[j].size&&arr[i].length<=arr[j].length)
{
arr[i].length=arr[j].length+1;
if(arr[loc].length<arr[i].length)
loc=i;
}
}
}
printf("%d\n",arr[loc].length);
}
那就奇怪了 我用的vs2005 逻辑判断出错 程序也不能崩溃啊

而且的确是运行sort()那句出现错误的呀~
展开
 我来答
ahaubit
2010-01-30 · TA获得超过1453个赞
知道小有建树答主
回答量:637
采纳率:0%
帮助的人:774万
展开全部
你这部分没有问题
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<num;++i)
{
for(int j=0;j<i;++j)
{
if(arr[i].speed<arr[j].speed&&arr[i].size>arr[j].size&&arr[i].length<=arr[j].length)
{
arr[i].length=arr[j].length+1;
if(arr[loc].length<arr[i].length)
loc=i;
}
}

最后能出结果.
dragoo1
2010-01-30 · TA获得超过519个赞
知道小有建树答主
回答量:404
采纳率:0%
帮助的人:120万
展开全部
汗,程序真长啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式