cpp 实现 argmax, argmin 求数组的最大值,最小值索引

参考:https://blog.csdn.net/theonegis/article/details/83036074

实现思路

  • 使用STL中的 std::min_element 函数求出最小值;
  • 使用STL中的 std::distance 计算最小值跟迭代器的头部的距离;
#include 
#include 
#include 

using namespace std;

template
inline size_t argmin(ForwardIterator first, ForwardIterator last) {
    return static_cast(std::distance(first, std::min_element(first, last)));
}

template
inline size_t argmax(ForwardIterator first, ForwardIterator last) {
    return static_cast(std::distance(first, std::max_element(first, last)));
}


int main() {
    vector v{1, 2, 33, 41, 5.0, 100, 27, 0, 40, 50};
    cout << "vector: " << argmax(v.begin(), v.end()) << ", " << argmin(v.begin(), v.end()) << endl;

    // 也可用于数组
    int a[] = {1, 2, 33, 41, 5, 100, 27, 0, 40, 50}; // len=10
    cout << "array: " << argmax(a, a + 10) << ", " << argmin(a, a + 10) << endl;
}
vector: 5, 7
array: 5, 7

你可能感兴趣的:(cpp 实现 argmax, argmin 求数组的最大值,最小值索引)