#include <iostream>
#include <algorithm>
using namespace std;
bool myfn(int i, int j) { return i<j; }
int main () {
int myints[] = {3,7,2,5,6,4,9};
// using function myfn as comp:
cout << "The smallest element is " << *min_element(myints,myints+7,myfn) << endl;
cout << "The largest element is " << *max_element(myints,myints+7,myfn) << endl;
return 0;
}
考虑到上述代码,如果我们将myfn
或&myfn
传递给min_element
,会有什么不同吗?当我们试图传递一个更为标准的仿函数时?
答案 0 :(得分:9)
通常,pass-by-reference和pass-by-value仅指传递变量,而不是函数。 (模板函数引入了一些复杂性,但这是另一个讨论。)在这里,您将myfn
作为指向函数的指针传递。如果您使用&myfn
,则没有区别。编译器将隐式地将myfn
转换为指向具有该名称的函数的指针。
答案 1 :(得分:6)
如果我们将myfn或&amp; myfn传递给min_element有什么区别吗?
没有。无论如何,myfn
被隐式转换为指向函数的指针。所以没有任何区别。