map (vs) unordered_map 以对为键

Posted

技术标签:

【中文标题】map (vs) unordered_map 以对为键【英文标题】:map (vs) unordered_map with pair as key 【发布时间】:2016-12-15 17:07:44 【问题描述】:

这会产生编译器错误

unordered_map<pair<int,int>,int> umap;

我了解必须提供哈希函数才能使其工作。

但是

map<pair<int,int>,int> omap;

无需任何散列函数即可完美运行。

为什么会这样?

【问题讨论】:

它产生了什么编译器错误? ideone.com/lgS58Z 【参考方案1】:

std::map 不使用散列函数。相反,它的“使用比较函数对键进行排序......”其中“搜索、删除和插入操作具有对数复杂度。”。查找是通过遍历搜索树而不是通过散列来完成的。

【讨论】:

以上是关于map (vs) unordered_map 以对为键的主要内容,如果未能解决你的问题,请参考以下文章

Qt - std::unordered_map - 销毁时间

在 Visual Studio 中放置并插入 unordered_map?

无法创建元组的 unordered_map<int, int, int>

在 unordered_map Boost 中插入模板值时出错

C++ 如何清空unordered_map

如何在c ++中遍历unordered_map的unordered_map的unordered_map