[英]std::min_element returning unexpected result
我想找到一个向量的最小值:
#include <algorithm>
#include <iostream>
#include <vector>
using namespace std;
int main () {
vector<double> v{2, 0, 4};
double minT = *std::min_element(v.begin(), v.end(),
[](double i1, double i2) {
std::cout << "Comparing: " << i1 << " " << i2 << " " << ((i1 < i2)? i1:i2) << " " << '\n';
return (i1 < i2)? i1:i2;
});
cout << "Minimum is: " << minT << '\n';
}
但是这段代码的输出是:
Comparing: 0 2 0
Comparing: 4 2 2
Minimum is: 4
我究竟做错了什么? 那里有任何未定义的行为吗?
注意 :我知道我不需要lambda函数。 删除它会返回预期的结果(0),但我的目标是拥有一个不考虑零的个性化min函数。
如果第一个参数小于第二个参数,则比较器需要返回true
,而不是两个值中较小的一个。 所以返回语句应该是
return i1 < i2;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.