C++的函数传参可以是些什么?解决方法

C++的函数传参可以是些什么?
最近在看accelerated c++,里面有种传参的方式以前没见过,
72页的例程中,有一句这样的函数语句:
sort(students.begin(), student.end(), compare);

其中,compare 是一个函数,它的内容如下所示:
bool compare(const Student_info& x, const  Student_info& y)
{
        return x.name  < y.name;
}

在此书的第六章节的第116页中也有这种用法,传递一个函数的名字,我的疑问是,我没有把 compare 函数的值传给cmpare函数,系统怎么知道我使用的是谁的数据,如果说sort函数里面有写好了怎样使用这个compare,但是第六章节的那个函数就没有写,而且这个使用的值也不是什么全局变量,请问各位大神这是一种什么使用方法?
------解决思路----------------------
这个排序函数,内部调用了传入的比较函数,来处理排序过程中比较两个队列中两个元素大小的问题
这个是有固定的调用参数的,这是属于约定好的东西。

你可以阅读一下有关函数指针的相关资料
------解决思路----------------------
sort的源代码比如在include\algorithm中,自己打开看。

别拿豆包不当干粮;
别拿无扩展名的文件不当C++源代码。
C++的函数传参可以是些什么?解决方法
------解决思路----------------------
students容器里的就是Student_info对象,对吧,所以这样写当然就没问题了。
stl的一大优点就是算法与数据分离。就如你现在的感受,一个sort算法通配所有数据。
------解决思路----------------------
sort(students.begin(), student.end(), compare);
前2个参数表明了compare的范围, sort里面写好的

至于什么116页, 贴粗来
------解决思路----------------------
看看 write_analysis 的代码不就清楚了么, 就是一个回调函数而已。
------解决思路----------------------
引用:
Quote: 引用:

students容器里的就是Student_info对象,对吧,所以这样写当然就没问题了。
stl的一大优点就是算法与数据分离。就如你现在的感受,一个sort算法通配所有数据。


如果我定义了两个vector<Student_info >对象呢,例如:
vector<Student_info >  students1;
vector<Student_info >  students2;
那average_analysis函数应该使用的是哪个对象?(此程序我已贴出照片在贴子里)
C++的函数传参可以是些什么?解决方法
从write_analysis来看,两个都分别调用了
------解决思路----------------------
引用:
Quote: 引用:

sort(students.begin(), student.end(), compare);
前2个参数表明了compare的范围, sort里面写好的

至于什么116页, 贴粗来


已贴出


这和sort一样, write_analysis(cout, "average",average_analysis,did,didnt) 函数,
把第3,4个参数(都是vector<Student_info >), 传给了第2个参数(average_analysis), 具体怎么实现的要看write_analysis里面怎么写的
------解决思路----------------------
引用:
Quote: 引用:

Quote: 引用:

sort(students.begin(), student.end(), compare);
前2个参数表明了compare的范围, sort里面写好的

至于什么116页, 贴粗来


已贴出


这和sort一样, write_analysis(cout, "average",average_analysis,did,didnt) 函数,
把第3,4个参数(都是vector<Student_info >), 传给了第2个参数(average_analysis), 具体怎么实现的要看write_analysis里面怎么写的

数错了 ,did,didnt是第4,5个参数, average_analysis是第3个