1

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

我想计算将所有元素添加到地图后调用相等比较函数的次数。是否有捷径可寻?

4

1 回答 1

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

于 2012-10-28T19:04:04.307 回答