c++ - unordered_map 的最坏情况是什么?

标签 c++ map time-complexity unordered-map space-complexity

我找到了很多关于mapunordered_map 的复杂性的帖子。据说 unordered_map 的最坏情况复杂度为 O(N)。出于我的目的,我将输入排序值,如 1 2 5 6 9 11 12..。我需要插入或查找并删除一个值。我将不得不经常插入/删除。我想过使用 set ,它在所有情况下都具有 log(n) 的复杂性。然后我偶然发现了具有最佳 O(1) 复杂度的 unordered_map。但是我需要了解在我的场景中我会面临 unordered_map 的最坏情况吗?又会是怎样的场景?

编辑:在我的例子中,所有值都是唯一的。

最佳答案

unordered_map 最坏的情况通常发生在哈希函数为映射中的每个插入产生冲突时。

我说“通常”是因为该标准仅指定最坏情况的复杂性,而不是何时或如何发生,因此理论上您问题的答案是它由实现定义

因为你所有的值都是唯一的,而且显然是整数(它提供了非常好的散列,可能是最优的 _ 这又是依赖于实现的),你不会遇到这种最坏的情况。插入/查找/删除的时间复杂度为 O(1),所以这看起来是一个合理的选择。

关于c++ - unordered_map 的最坏情况是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24154986/

相关文章:

map - 如何通过一些图像/电影帧创建房间的 2D map ?

c++ - 调用 std::map operator[] 或插入时会发生什么

big-o - 以下代码的时间复杂度(大 O 表示法)?

algorithm - 判断字符串中是否有字符恰好出现K次

c++ - 使用 AMD 显卡的 Eclipse-CDT (Windows) 中的 OpenCL

c++ - 尝试使用 vector<ostringstream> 时出现编译错误

使用 stringstream 的 C++ String 到 double 转换给出精度错误

Java HashMap 重复元素

c++ - 排序 k 个有序链表?

c++ - 如何用 if 检查字符串数组的第一个元素第一个符号?