You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何检查C++ STL中unordered_map的指定键是否不存在?

正确检查unordered_map键是否存在的方法

你遇到的问题根源在于使用revert[id]时,若键id不存在,unordered_map会自动插入该键并默认构造对应的vector——虽然正常情况下默认构造的vector size应为0,但你看到的异常大值大概率是内存未定义行为导致的,更关键的是这种方式会直接修改原map,导致后续判断完全失效。

推荐两种安全的检查方式:

方法1:使用find()方法

find()会返回指向目标键的迭代器,若键不存在则返回map.end(),不会修改原map:

if (revert.find(id) == revert.end()) {
    // 此处处理id不存在的逻辑
}

方法2:使用count()方法

count()返回目标键在map中的出现次数(unordered_map中键唯一,所以结果只能是0或1),同样不会修改原map:

if (revert.count(id) == 0) {
    // 此处处理id不存在的逻辑
}

如果你确实需要访问该键对应的vector,可以先检查存在性再操作,比如:

auto it = revert.find(id);
if (it != revert.end()) {
    // 访问it->second来操作对应的vector
    auto& vec = it->second;
    // ...
} else {
    // 键不存在的处理
}

内容的提问来源于stack exchange,提问作者learner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 18:05:27