首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >这是因为两次查找而不是一次查找速度慢吗?

这是因为两次查找而不是一次查找速度慢吗?
EN

Stack Overflow用户
提问于 2014-09-20 15:16:27
回答 5查看 1.1K关注 0票数 15

当我想确保要使用的条目存在时,我通常会这样做。

代码语言:javascript
运行
复制
#include <unordered_map>

struct type { int member; };
std::unordered_map<type> map;

if (map.find(key) != map.end())
    map[key].member = 42;

但是,我认为它在哈希映射中对key执行两次查找。这就隐藏了查找。

代码语言:javascript
运行
复制
#include <unordered_map>

struct type { int member; };
std::unordered_map<type> map;

auto find = map.find(key);
if (find != map.end())
    find->second.member = 42;

第一种选择感觉更有表现力。真的慢了吗?

EN

Stack Overflow用户

发布于 2014-09-20 16:25:53

除非有特定的理由保留现有条目中的值(如果它已经存在),否则可以完全跳过第一次搜索,只需设置新值:

代码语言:javascript
运行
复制
#include <unordered_map>

struct type { int member; };
std::unordered_map<key_t, type> map;

map[key].member = 42;

这将修改现有条目(如果有),并在不存在的情况下插入新条目。

票数 2
EN
查看全部 5 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25950207

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档