【问题标题】:What is the fastest way to check if value is exists in std::map?检查 std::map 中是否存在值的最快方法是什么?
【发布时间】:2023-01-12 17:22:52
【问题描述】:

检查 std::map<int, int> 中是否存在值的最快方法是什么?我应该使用unordered map吗?在此任务中,我不能使用任何库来代替 std。

现在,如果不检查所有值,我不知道有什么方法可以做到这一点。

【问题讨论】:

  • std::map 通常实现为平衡树。搜索以对数时间完成(最坏情况)。 std::unordered_map 通常实现为哈希表。搜索是 O(1),但只是平均。最坏的情况将是线性的。所以各有优缺点。
  • 您甚至阅读过文档吗?
  • documentation 里有你想要的一切。您可以使用std::map::find(),或者如果您启用了 C++20,则可以使用std::map::contains()
  • .find() 方法按键搜索,不是吗?

标签: c++ algorithm performance dictionary unordered-map


【解决方案1】:

您可以使用 find 方法查找元素。地图通常由red-black trees实现,它有一个对数的search complexity

【讨论】:

    猜你喜欢
    • 2022-06-06
    • 2011-11-26
    • 2011-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-16
    • 2017-04-16
    • 1970-01-01
    相关资源
    最近更新 更多