2016-05-13 94 views
0

我在sort()函數中使用了lambda函數。在我的lambda函數中,如果兩者相等,則返回true。然後我得到了分割錯誤。C++ comp(a,a)== false

審查C++ Compare後,它說

For all a, comp(a,a) == false 

我不明白爲什麼它一定是假的。爲什麼我不能讓comp(a,a)==true

(在此先感謝)

+2

比較告訴你a是否在訂購前放在b之前。一個不能在一個人之前,一個人是錯誤的。 – user4581301

+0

@ user4581301爲什麼不能在a之前不能?如果a在a之前,它仍然被排序。 – 8090PZ

+0

因爲a是a。讓我們聽聽艾因蘭德。 – user4581301

回答

4

思考的Comp作爲某種「比」關係,即它定義了某種訂購一組數據。

現在你可能想要做一些東西,有了這層關係,就像在遞增的順序,在排序的數據的二進制搜索分類數據等

有很多種算法做這樣的東西非常快,但他們通常有要求,他們處理的順序是「合理的」,這是正確的術語Strict weak ordering。它由您給出的鏈接中的規則定義,第一個基本意思是:

「沒有元素應該小於自身」。

這確實是合理的假設,也是我們算法需要的一件事情。

相關問題