C++ hash_map find() 与 contains() 性能

问题描述 投票:0回答:1

如果我想检查某个元素是否包含在地图中并随后直接使用它,那么性能方面更好的选项是什么?

std::unordered_map<int, std::string> my_map;
int my_key;

选项 1:

if (const auto& iter = my_map.find(my_key); iter != my_map.end()) {
      const auto& value = iter->second;
}

选项2:

if (my_map.contains(my_key)) {
      const auto& value = my_map.at(my_key);
}

为了可读性,我更喜欢选项 2。但是,根据我的理解,选项 2 应该更慢,因为有两个哈希图查找。

c++ performance hashmap std
1个回答
0
投票

你是对的。

使用

find
效率更高,因为只执行一次查找,而使用
contains
的第二个选项效率较低,因为您还必须执行
at
查找。

© www.soinside.com 2019 - 2024. All rights reserved.