如何解决为什么标准库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);
^
解决方法
您要将int
和long long int
两种不同的类型传递给min
和max
。这些函数期望两个参数为同一类型。
您可以尝试将int
参数转换为long long int
。
left_min
和nums
的数据类型不同,这就是为什么会出错的原因。尝试定义相同数据类型的所有向量。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。