【问题标题】:What makes unorder_map and unorder_set faster than map and set?是什么让 unordered_map 和 unordered_set 比 map 和 set 更快?
【发布时间】:2020-08-12 02:34:59
【问题描述】:

所以,昨天我有一个关于 STL 关联容器(unordered_map、unordered_set、map 和 set)的讲座。讲师告诉我们,通常 unordered_map 和 unordered_set 为 0(1),map 和 set 为 0(log(N))。我的问题是什么让他们更快?毕竟它们没有排序。

【问题讨论】:

  • 查找哈希映射。
  • 你上过数据结构的课程了吗?您需要了解binary treehash table 的工作原理才能了解时间复杂度的差异。
  • 正是如此。您可以交换迭代它们的可能性,以便平均而言更快地插入和查找。
  • @bipll unordered_map::iterator 是一个东西。我认为您的意思是“按特定顺序迭代它们”
  • @Caleth 按按键顺序,嗯?

标签: c++ containers


【解决方案1】:

用于表示这些容器的底层数据结构使一个比另一个更高效。

  • unordered_map 和 unordered set 使用哈希表
  • 映射和设置使用自平衡 BST(二叉搜索树)

哈希表通常有一个 O(1) 的插入、搜索时间。哈希表实现了这一点,因为它们使用索引方法来访问和存储数据。

BST 的 O(log(n)) 主要是因为在搜索或插入树时涉及的遍历。他们不使用索引方法。对于任何操作,您都从根节点开始,然后遍历。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-18
    • 2017-03-12
    • 2019-03-01
    • 2021-05-30
    • 2019-08-22
    • 1970-01-01
    • 2019-04-01
    相关资源
    最近更新 更多