1. 程式人生 > >Effective_STL 學習筆記(二十一) 永遠讓比較函式對相等的值返回 false

Effective_STL 學習筆記(二十一) 永遠讓比較函式對相等的值返回 false

 

除非比較函式總是為相等的值返回 false,否則將會打破所有的標準關聯容器

不管關聯容器是否允許存在副本(set、map、multiset、multimap)

對於(set、map)使用 less_equal (<=):

1   !( 10A  <= 10B ) && !( 10B <= 10A );  // 測試10A 和10B是否相等

結果為 false,當 insert(10A) 與 insert(10B) 的時候將破壞容器

 

對於允許存在副本的關聯容器,使用 equal_range,

不能使得 10A和10B同時出現在 equal_range 範圍內,一樣導致容器破壞

 

從技術上說,用於排序關聯容器的比較函式必須在它們所比較的物件上定義一個“嚴格弱化”