如果我想检查某个元素是否包含在地图中并随后直接使用它,那么性能方面更好的选项是什么?
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 应该更慢,因为有两个哈希图查找。
你是对的。
使用
find
效率更高,因为只执行一次查找,而使用 contains
的第二个选项效率较低,因为您还必须执行 at
查找。