2017-09-25 31 views
2

max()模板備註有意返回返回斯捷潘諾夫注意

b<a?a:b 

,而不是

a<b?b:a 

,以確保函數的行爲正確,即使這兩個值等價的,但不等於 這裏有一些解釋但仍不明白 http://stepanovpapers.com/notes.pdf(第63頁)

我不能想出一個用例的兩個值將是等效的,但是不等於

+0

不知道它在這裏也適用與否,但'NaN'不等於'NaN'。 – NathanOliver

+0

在您鏈接的文檔中,「平等」(或「平等」)字樣僅出現在第57頁,然後再次出現在第68頁。我不確定您在此處引用了什麼內容。 – mkrieger1

+0

如果你有超級運算符''。因此,兩個實例可能會有所不同,但有一個字段是相同的,並且在重載的運算符中使用。所以他們返回相同的,但實際上並不相同,並且返回哪一個是重要的。舉例來說,sean父母爲展示這個微妙的錯誤而實施了一個[clamp](http://en.cppreference.com/w/cpp/algorithm/clamp)函數。 –

回答

0

a==b第一返回b,第二返回a

當重載類的<功能這將觸發

eg

class myClass { 
public: 
    int key; 
    string value; 
    bool operator<(const myClass& rhs) { 
     return this->key < rhs.key; 
    } 
} 

您可能需要決定你想要什麼程序做了更具體的情況