2012-10-28 50 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