我有一个带有用户定义的哈希和相等函数的无序映射。
我想计算将所有元素添加到地图后调用相等比较函数的次数。是否有捷径可寻?
在您的自定义相等函数中计算它们:
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_
来访问计数器值。