C++ Logo

STD-PROPOSALS

Advanced search

Subject: [std-proposals] arg_min and arg_max algorithms
From: Jason Beach (jason.m.beach_at_[hidden])
Date: 2020-12-15 18:59:51


Hi,
  I recently wrote a simple particle filter for a robotics project and
needed an arg_min function. This function returns the argument that
results in a minimum value of a function (as opposed to the minimum
argument value itself https://en.wikipedia.org/wiki/Arg_max). In my case,
from a list of points I needed to find the point that was closest to
another given point.

I based my implementation on the examples given on cppreference for
std::transform and std::min_element. The major advantage of a combined
algorithm as opposed to using std::transform and std::min_element
individually is that it cuts the number of function evaluations in half by
caching the result. A working implementation for arg_min is here:
https://godbolt.org/z/P58Yca. Arg_max is similar and overloads to
eliminate the begin/end iterators could be added (and probably ones to work
with ranges, although I have no experience with them yet).

I think this would be a valuable addition to the algorithms library as it
has fairly broad applicability. I'm curious what others think.

Thanks,
Jason



STD-PROPOSALS list run by std-proposals-owner@lists.isocpp.org

Standard Proposals Archives on Google Groups