從cplusplus.com:STL集的兩個元素何時被認爲是相同的?
template < class Key, class Compare = less<Key>,
class Allocator = allocator<Key> > class set;
「比較:比較類:A類,是以相同的類型容器元件的兩個參數,並返回一個布爾表達式排版(A,B),其中補償是這個比較類的一個對象,a和b是容器的元素,如果在嚴格的弱排序操作中將a放置在比b更早的位置,它將返回真,它可以是實現函數調用操作符的類或一個指向函數的指針(參見構造函數舉例),默認爲less,這與應用小於運算符(a <
b)相同返回 set對象使用此表達式來確定元素的位置在th e容器。 「
假設比較類用於決定兩個對象中的哪一個是」較小「還是」較小「,那麼類將如何檢查兩個對象是否是兩個元素是相等的(例如,以防止插入相同的元素兩次)?
我可以想象這裏有兩種方法:一種是在後臺調用(a == b),但不提供重寫此比較的選項( (默認值越小越好)對我來說似乎不太對,另一種假設是(a == b)==!(a < b)& &!(b < a);那就是如果兩者都不相等,則認爲兩個要素相等是比其他的「少」,但不知何故,這也不適合我,因爲比較可以是任意複雜類的對象之間的任意複雜的布爾函子。
那麼它是如何做到的?