Как преобразовать функцию Scala в качестве параметра в C++?
Поэтому я хотел бы реализовать функциональное программирование на с ++, так же, как это делалось бы в Scala.
Допустим, у меня есть этот фрагмент кода в Scala:
def exampleA(l: List[P], f: P => Option[P]): Option[P] = l match {
case Nil => None
case x :: l => val a = f(x); if ( a.notDefined ) exampleA(l, f) else a
}
Это берет в списке P, и a function as parameter
, Он вернет первый элемент в списке.
Теперь я хотел бы подойти к C++ таким же образом, и я уже сбит с толку, потому что нет информации относительно вызова функции в качестве параметра.
Итак, это то, что я имею до сих пор:
typedef vector<pair<int,int> > P;
P exampleB( P (*f)(int,Path) ) {
cout << (*f)->first << endl;
}
P exampleBA(int dim, Path path) {
exampleB(exampleBA);
}
Я хотел бы получить доступ к first
элемент пары внутри P
внутри example()
метод.
Как я могу это сделать?
1 ответ
http://www.cprogramming.com/tutorial/function-pointers.html
Но рекомендуемый путь в C++11 - это std:: function: http://en.cppreference.com/w/cpp/utility/functional/function