Bardzo potrzebna ogólna funkcja argmax w C ++

Jestem zepsutym programistą Pythona, który jest przyzwyczajony do obliczaniaargmax acollection w odniesieniu do niektórychfunction z

max(collection, key=function)

Na przykład:

l = [1,43,10,17]
a = max(l, key=lambda x: -1 * abs(42 - x))

a następnie zawiera 43, numer najbliższy 42.

Czy można napisać funkcję C ++, która przyjmuje dowolną „iterowalną” i dowolną funkcję i zwraca argmax jak powyżej? Myślę, że wymagałoby to parametrów szablonuauto słowo kluczowe iiteracja oparta na zakresie, ale nie byłem w stanie tego ułożyć.

questionAnswers(2)

yourAnswerToTheQuestion