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ć.