2012-10-28 49 views

回答

2

在您的自定義功能的平等盡數:

然後插入到地圖完成後:equality_comparer::counter_ = 0

正如@PiotrNycz提到你可以使用這個:

struct equality_comparer : std::binary_function<MyType, MyType, bool> { 
    mutable int counter_; 
    //^^^^^^^ 
    equality_comparer() : counter_(0) {} 
    bool operator()(MyType const& lhs, MyType const& rhs) { 
     ++counter_; 
     return lhs == rhs; 
    } 
    void reset_counter() {counter_ = 0;} 
}; 

然後你就可以有myMap.key_eq().reset_counter(),而不是在前面的代碼equality_comparer::counter_ = 0myMap.key_eq().counter_訪問計數器的值。

+1

'靜態'是不需要的。如果OP使用多個地圖,它會給出錯誤的結果。來自非靜態計數器的結果可以通過以下方式獲得:'someMap.key_eq()。counter' – PiotrNycz

+0

@PiotrNycz +1你對此肯定是正確的,那是我首先想到的,然後我想編輯我的答案,但是我認爲它已經爲測試工作。 – BigBoss

+0

@BigBoos你可以隨時添加這個作爲下一個讀者的替代(或更好的建議)。答案不僅由OP讀取。 – PiotrNycz