会C++的帮忙来解释下这几句话,谢谢

来源:百度知道 编辑:UC知道 时间:2024/05/16 19:05:42
别人给的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没有再定义,肯定和cmp有关的,调用sort这个函数的参数有什么意义,能

首先,我是学c语言的.c++了解不怎么样,看看能帮你解决几个解决几个吧.
问题1:
是一个函数,做的是两个结构体对象(a与b)的成员变量l的串比较.ttype为类型名,在本程序最开始时候定义的.
问题2:
关于这个问题,如果可以将mian全部代码贴出来最好,cmp是个变量是确定的,c语言中,变量与函数的区别就是变量直接使用变量名,函数名后面需要接"(参数列表)"如果没有参数也要把"()"写上,这才是函数.
好好检查一下吧,如果没有错误可以执行,那么cmp一定有定义,否则编译应该不会通过.如果通过那就出bug了...

*^o^*

好象没解决什么实际问题..不过他的解释已经差不多了

bool cmp(ttype a,ttype b){return strcmp(a.l,b.l)<0;} //这句话是什么意思?是函数吗?又关ttype a,ttype b什么事?
cmp是一个比较两个ttype类型的变量的函数,比较的原则是根据变量的l字段

sort(t+1,t+n+1,cmp); //这个sort是干嘛的?快速排序吗?cmp是什么?与之前那个cmp有关吗?
sort是用来排序的,它用函数cmp来判断两个变量的大小,这个cmp就是前面的那个cmp