微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么标准库min函数在下面显示错误?

如何解决为什么标准库min函数在下面显示错误?

class Solution {
public:
    
    int maximumProduct(vector<int>& nums) {
        
        int n = nums.size();        
        vector<long long int> left_max(n,0);
        vector<long long int> right_max(n,0);
        vector<long long int> left_min(n,0);
        vector<long long int> right_min(n,0);
        
        left_min[0]=nums[0];
        left_max[0]=nums[0];
        cout<<max(1,5); //this line is working 
        for(int i=1;i<nums.size();i++){
            left_min[i]=min(left_min[i-1],nums[i]); // why this line is throwing error
            left_max[i]=max(left_max[i-1],nums[i]);
        }

        right_min[n-1] = nums[n-1];
        right_max[n-1] = nums[n-1];
        
        for(int i=n-2;i>=0;i++){
            right_min[i]=min(nums[i],right_min[i+1]);
            right_max[i]=max(nums[i],right_max[i+1]);
        }
        
        for(int i=0;i<n;i++){
            cout<<right_min[i]<<" ";
        }
        return 1;
    }
};

上面我已经评论了两行,第一行显示错误,而另一行则没有?有人可以解释吗?

以下错误消息:

Line 16: Char 25: error: no matching function for call to 'min'
            left_min[i]=min(left_min[i-1],nums[i]); // why this line is throwing error
                        ^~~
/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/algorithmfwd.h:383:5: note: candidate template ignored: deduced conflicting types for parameter '_Tp' ('long long' vs. 'int')
    min(const _Tp&,const _Tp&);
    ^
/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/stl_algo.h:3450:5: note: candidate template ignored: Could not match 'initializer_list<type-parameter-0-0>' against 'long long'
    min(initializer_list<_Tp> __l,_Compare __comp)
    ^
/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/stl_algo.h:3444:5: note: candidate function template not viable: requires single argument '__l',but 2 arguments were provided
    min(initializer_list<_Tp> __l)
    ^
/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/algorithmfwd.h:388:5: note: candidate function template not viable: requires 3 arguments,but 2 were provided
    min(const _Tp&,const _Tp&,_Compare);
    ^

解决方法

您要将intlong long int两种不同的类型传递给minmax。这些函数期望两个参数为同一类型。

您可以尝试将int参数转换为long long int

,

left_minnums的数据类型不同,这就是为什么会出错的原因。尝试定义相同数据类型的所有向量。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。