c-一个有关sort函数第三个参数返回值的疑问

问题描述

一个有关sort函数第三个参数返回值的疑问

#include
#include
#include

using namespace std;

const int maxsize = 1000;

struct stu{
char name[100];
int age;
int score;
};

bool cmp(stu a,stu b)
{
if(a.score < b.score)
return true;
int temp = strcmp(a.name,b.name);
if(temp < 0)
return true;
if(a.age < b.age)
return true;
return false;
}

int main()
{
int n;
struct stu s[maxsize];
while(scanf("%d",&n) != EOF)
{
for(int i = 0;i < n;++i)
{
scanf("%s",&s[i].name);
scanf("%d",&s[i].age);
scanf("%d",&s[i].score);
}
sort(s,s+n,cmp);
for(int i = 0;i < n;++i)
{
printf("%s ",s[i].name);
printf("%d ",s[i].age);
printf("%d",s[i].score);
printf("n");
}
}

return 0;
}
在这里的cmp函数,在运行时总是弹出invalid operator < 的错误,但是如果将cmp中的return true换成return a.score < b.score之类的就对了,这是为什么了?函数sort中第三个参数需要返回的不就是bool值吗?

时间: 2024-09-04 08:56:37

c-一个有关sort函数第三个参数返回值的疑问的相关文章

c++-在写函数时 是不是要把返回值都放在形参表里?把函数返回值设定为true/false?

问题描述 在写函数时 是不是要把返回值都放在形参表里?把函数返回值设定为true/false? 在写函数时 是不是要把返回值都放在形参表里?把函数返回值设定为true/false? 解决方案 主要还是看程序需要把,这种想法只是对于一些内存申请操作来说,函数在结束后就将函数内申请的控件释放.如果已经在外部申请好了内存,是可以当做返回值返回的.所以说并不一定就要把返回值放在形参表里. 解决方案二: 这也是一种方式,尤其对于要返回多个结果的时候,一般通过参数来传递结果.然后函数返回值来表示函数是否调用

struts-急求使用jquery提交的请求回调函数接收不到后台返回值解决办法

问题描述 急求使用jquery提交的请求回调函数接收不到后台返回值解决办法 $.ajax({ type: "post", url: uri, async:true, data: data, success: function (result) { $("#showrecord").append(result); }, error:function(XMLResponse){ alert("wait a minute"); } }); 后台: Ht

dim函数第三个参数设置截取字符的长度问题_vbs

dim函数的第三个参数,也就是截取字符的长度,我在设置这个的时候,出了些问题:response.write mid(up_address,a(i),a(i+1)-1) & "<br />"像我上面这样写的时候,它就会报错,提示无效的过程调用或参数, response.write mid(up_address,a(i),a(i+1)+1) & "<br />"但是当我把其中的a(i+1)-1改为a(i+1)+1时,就能执行了,a

PHP入门教程之自定义函数用法详解(创建,调用,变量,参数,返回值等)_php技巧

本文实例讲述了PHP自定义函数用法.分享给大家供大家参考,具体如下: Demo1.php <?php //标准函数,内置函数 echo md5('123456'); echo '<br/>'; echo sha1('123456'); echo '阅谁问君诵,水落清香浮.'; ?> Demo2.php <?php //创建函数,不要跟系统的内置函数重名 //函数有个特性,必须调用,才可以执行 //无参数表示()里面是空的,无返回就是函数的程序里没有 return functi

Javascript函数参数 返回值 调用例子

一,函数定义调用 Function(函数)类型实际上是对象.每个函数都是Function类型的实例,而且都与其他引用类型一样具备属性和方法,由于函数是对象,因此函数名实际上也是一个指向函数对象的指针. (1)典型的函数声明 function slide(arguments){ //...code } (2)以函数表达式的形式定义函数 var slide = function(arguments){ //...code } 虽然上面两种方式逻辑上是等价的,但是还是有点小区别: 区别一:例一中的函数

函数对象-sort函数的第三个参数有什么用

问题描述 sort函数的第三个参数有什么用 sort函数原先是升序排列为什么加入一个人自己定义的compare函数之后就会降序了呢?小白愚钝,希望大神讲得详细一点,不胜感激 解决方案 排序的数据类型不局限于整数,只要是定义了小于运算的类型都可以,比如字符串类string.如果是没有定义小于运算的数据类型,或者想改变排序的顺序,就要用到第三参数--比较(compare)函数.比较函数是一个自己定义的函数,返回值是bool型,它规定了什么样的关系才是"小于".比较时sort函数根据comp

中途退出有返回值的函数

问题描述 怎么中途退出有返回值的函数啊,return的话,出现java.lang.NullPointerException,用exit(0)的话退出整个程序,不是我所要的 解决方案 你可以抛出异常给调用者也是可以的,由调用者捕获处理异常.比如:Object f() throws XxxException{ //在你想返回的地方抛出异常 throw new XxxException(); ......}解决方案二:返回非void的函数是必须要有返回值的,这是函数的基本要求,除非你是退出java虚拟

PHP函数如何增加强制类型返回实例

在开发过程中,函数的返回值类型应该是确定不变的,但PHP是弱类型的语言, 所以PHP是没有此类语法验证的,正因为如此,造成了很多坑坑. 比如下面的代码: <?php function getArticles(...){ $arrData = array(); if($exp1){ return $arrData; }else if($exp2){ return 1; }else{ return false; } } $arrData =getArticles(...); foreach($arr

const相关-为什么一个const属性的返回值可以用 非const 型来接受呢?

问题描述 为什么一个const属性的返回值可以用 非const 型来接受呢? const int func() { int j = 8; return j; } int main() {int i = 5 ;i = func(); } 为什么可以翻译通过呢? 解决方案 const int func() 说明函数func()的返回值是一个常数,不想让对象再次被修改,因为const一定是先被初始化的 而在主函数中的:i = func(),只能说明是将一个常数值赋值给一个变量,很正常啊!!! 还不懂的