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++源代码。

------解决思路----------------------
students容器里的就是Student_info对象,对吧,所以这样写当然就没问题了。
stl的一大优点就是算法与数据分离。就如你现在的感受,一个sort算法通配所有数据。
------解决思路----------------------
sort(students.begin(), student.end(), compare);
前2个参数表明了compare的范围, sort里面写好的
至于什么116页, 贴粗来
------解决思路----------------------
看看 write_analysis 的代码不就清楚了么, 就是一个回调函数而已。
------解决思路----------------------
从write_analysis来看,两个都分别调用了
------解决思路----------------------
这和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个
最近在看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++源代码。
------解决思路----------------------
students容器里的就是Student_info对象,对吧,所以这样写当然就没问题了。
stl的一大优点就是算法与数据分离。就如你现在的感受,一个sort算法通配所有数据。
------解决思路----------------------
sort(students.begin(), student.end(), compare);
前2个参数表明了compare的范围, sort里面写好的
至于什么116页, 贴粗来
------解决思路----------------------
看看 write_analysis 的代码不就清楚了么, 就是一个回调函数而已。
------解决思路----------------------
从write_analysis来看,两个都分别调用了
------解决思路----------------------
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里面怎么写的
------解决思路----------------------
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个