C ++:计算哈希映射中的相等比较数

时间:2012-10-28 19:01:04

标签: c++ hashmap

我有一个带有用户定义的哈希和相等函数的无序映射。

我想计算在将所有元素添加到地图后调用相等比较函数的次数。有一个简单的方法吗?

1 个答案:

答案 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_访问计数器值。