首页 > 解决方案 > std::pair 的 unordered_map

问题描述

我想为 std::pair 对象创建一个映射,该映射将通过其字段的值比较对象。在对 stackoverflow 进行一些研究后,我已经实现了以下代码,但找不到我正在寻找的答案。

我收到 songHasher 运算符重载程序的编译错误,但不确定我的实现是否是它的原因。

class song { ... };

struct songHasher {
    size_t operator()(std::pair<int, int> a) const noexcept {
        return (size_t) a.first ^ a.second;
    }
};

struct songComparator {
    bool operator()(const std::pair<int, int> & a, const std::pair<int, int> &b) const {
        return a.first == b.first && a.second == b.seconds;
    }
};

std::unordered_map<
    std::pair<int, int>,
    song*,
    songHasher,
    songComparator> albumMap;

谢谢。

标签: c++unordered-mapstd-pair

解决方案


推荐阅读