美文网首页
cpp 实现 argmax, argmin 求数组的最大值,最小

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

作者: 谢小帅 | 来源:发表于2019-05-06 16:28 被阅读0次

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

    实现思路

    • 使用STL中的 std::min_element 函数求出最小值;
    • 使用STL中的 std::distance 计算最小值跟迭代器的头部的距离;
    #include <iostream>
    #include <algorithm>
    #include <vector>
    
    using namespace std;
    
    template<class ForwardIterator>
    inline size_t argmin(ForwardIterator first, ForwardIterator last) {
        return static_cast<size_t>(std::distance(first, std::min_element(first, last)));
    }
    
    template<class ForwardIterator>
    inline size_t argmax(ForwardIterator first, ForwardIterator last) {
        return static_cast<size_t>(std::distance(first, std::max_element(first, last)));
    }
    
    
    int main() {
        vector<double> 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 求数组的最大值,最小

          本文链接:https://www.haomeiwen.com/subject/erldoqtx.html