gpt4 book ai didi

c++ - std::min_element 返回意外结果

转载 作者:太空狗 更新时间:2023-10-29 23:25:24 28 4
gpt4 key购买 nike

我想找到一个 vector 的最小值:

#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),但我的目标是拥有一个不考虑零的个性化最小函数。

最佳答案

如果第一个参数小于第二个参数,比较器需要返回 true,而不是两个值中较小的一个。所以返回语句应该只是

return i1 < i2;

关于c++ - std::min_element 返回意外结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28947119/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com