请帮忙翻译一下几行代码

来源:百度知道 编辑:UC知道 时间:2024/05/29 04:01:53
会C++的帮忙来解释下这几句话,谢谢

别人给的C++,有一些地方看不懂...望大牛解释一下

#include <algorithm>
using namespace std;
struct ttype
{
char l[5];
int p;
} t[50001];
struct nodetype
{
int l,r,f;
} tr[50001];
int n;
bool cmp(ttype a,ttype b){return strcmp(a.l,b.l)<0;} //这句话是什么意思?是函数吗?又关ttype a,ttype b什么事?

void printans(int w)
省略...
void maketree()
省略...
int main()
{
省略...
sort(t+1,t+n+1,cmp); //这个sort是干嘛的?快速排序吗?cmp是什么?与之前那个cmp有关吗?
省略...
return 0;
}

之前有人回答过这样的话:
bool cmp(ttype a,ttype b) //定义一个函数cmp,a和b是作为这个函数的参数传入
{
return strcmp(a.l,b.l)<0; //cmp函数的函数体,比较a.l和b.l的值,如果a.l<b.l返回真,否则返回假。
}

sort(t+1,t+n+1,cmp);是调用sort函数,并将t+1、t+n+1和cmp的值作为参数。这里的cmp应该是定义的一个变量,与前面的cmp无关。

最后这句"
sort(t+1,t+n+1,cmp);是调用sort函数,并将t+1、t+n+1和cmp的值作为参数。这里的cmp应该是定义的一个变量,与前面的cmp无关。"
cmp没有再定义,

1、bool cmp(ttype a,ttype b){return strcmp(a.l,b.l)<0;}
定义函数cmp,ttype a,ttype b是他的两个参数,都是ttype类型的。

2、sort(t+1,t+n+1,cmp);
sort是STL库中的排序函数,其中cmp函数比较元素的大小。
这个cmp就是前面定义的cmp函数,在STL中叫做函数对象,作为参数传入sort。
前边两个参数分别定义排序的开始和结束位置。

bool cmp(ttype a,ttype b){return strcmp(a.l,b.l)<0;} //这句话是什么意思?是函数吗?又关ttype a,ttype b什么事?

定义一个bool类型的函数cmp,实参为ttype(已被定义为结构体)类型的a和b
计算strcmp(a.1,b.1)并判断是否小于0
是则返回真,不是则返回假

sort(t+1,t+n+1,cmp); //这个sort是干嘛的?快速排序吗?cmp是什么?与之前那个cmp有关吗?

是的,是在函数库里面的
无关,之前那个是函数,这个是量
因为这个cmp后没有跟参数,更没有跟括号,明显是变量,常量或宏

你再去仔细找找cmp
肯定有定义的
要么就是在那个库里面有定义过