簡體   English   中英

std :: min_element返回意外結果

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM