【问题标题】:find a value in std::unordered_map [duplicate]在 std::unordered_map 中找到一个值 [重复]
【发布时间】:2021-09-22 22:55:01
【问题描述】:

std::unordered_map::find 在unordered_map中查找某个key,有没有查找某个value的函数?

当然,我可以编写一些简单的循环来做到这一点,但也许已经有一些东西可以做到这一点?

【问题讨论】:

  • 否,因为它效率低下,而且标准库的设计者不想鼓励低效的代码。
  • 人们通常为此使用多索引容器,例如boost.org/doc/libs/1_76_0/libs/multi_index/doc/index.html
  • 如果您发现自己经常进行这种反向查找,您可能需要重新考虑算法,或者两者中的哪一个才是真正的关键。

标签: c++ algorithm c++11 stl containers


【解决方案1】:

不,不是真的。映射条目(键值对)不是根据它们的值排列的;值也不是与键等分开存储的。或者更确切地说 - 标准不保证任何这一点,所有流行的实现都不提供这一点。

您只需要使用线性搜索...或支持您需要的搜索类型的不同/附加数据结构。

还请记住,std::unordered_map is quite slow 是实用的非渐近术语,因此如果考虑性能 - 一定要寻找替代方案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-10-20
    • 2015-11-24
    • 2011-12-28
    • 1970-01-01
    • 1970-01-01
    • 2011-04-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多