您的位置:首页 > 编程语言 > C语言/C++

用std::pair做Unordered_map的key(C++)

2016-04-24 03:21 281 查看
默认情况下unordered_map只支持primitive type作为其key,若使用用户自定义的key,需要传入用户自定义的hash function。

代码如下

struct pair_hash {

template <class T1, class T2>

std::size_t operator () (const std::pair<T1, T2> &p) {

auto h1 = std::hash<T1>{}(p.first);

auto h2 = std::hash<T2>{}(p.second);

return h1 ^ h2;

}

};

using Vote = pair<int, int>;

using Unordered_map = unordered_map<Vote, int, pair_hash>;

int main ()

{

Unordered_map um = { { make_pair(1, 4), 3 }, { make_pair(2, 4), 3 } };

cout << um[make_pair(1, 4)];

return 0;

}

更多讲解,参照以下博文
http://www.hawkers.cc/2016/04/unorderedmap-pair-funtor.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: