dev-journal

Simple C++ argmin/argmax for std::vector

template <typename T, typename A>
int arg_max(std::vector<T, A> const& vec) {
  return static_cast<int>(std::distance(vec.begin(), max_element(vec.begin(), vec.end())));
}

template <typename T, typename A>
int arg_min(std::vector<T, A> const& vec) {
  return static_cast<int>(std::distance(vec.begin(), min_element(vec.begin(), vec.end())));
}

Used as follows:

#include <vector>
#include <iostream>

void main() {
  std::vector<int> my_vec = { 1, 43, 2, 4, 2, 12 };
  int max_idx = arg_max(my_vec);
  std::cout << my_vec[max_idx] << std::endl;
}