我有一个带有用户定义的哈希和相等函数的无序映射。
我想计算在将所有元素添加到地图后调用相等比较函数的次数。有一个简单的方法吗?
答案 0 :(得分:2)
在自定义相等函数中计算它们:
struct equality_comparer : std::binary_function<MyType, MyType, bool> {
static int counter_;
bool operator()( MyType const& lhs, MyType const& rhs ) {
++counter_;
return lhs == rhs;
}
};
int equality_comparer::counter_ = 0;
然后在插入地图后完成: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_ = 0
,并myMap.key_eq().counter_
访问计数器值。