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

C++中unordered_map表现是否符合预期?为何(1,3)未出现在输出中

为什么(1,3)没有出现在unordered_map的输出中?

先看你定义的update函数,它的核心逻辑是为每个key仅保留最大的关联value,代码如下:

void update(int key, int value) {
    auto it = maxima.find(key);
    if (it == maxima.end()) {
        maxima.emplace(key, value);
    } else if (value > it->second) {
        it->second = value;
    }
}

这个函数的执行规则很明确:

  • 如果传入的key在maxima哈希表中不存在,就把(key, value)插入表中
  • 如果key已经存在,只有当新的value大于当前表中该key对应的旧value时,才会更新value;新value小于或等于旧value时,不会做任何修改

再看你的测试调用流程:

  • 首先执行update(1,6):此时表中没有key=1,所以成功插入(1,6)
  • 之后执行update(1,3):此时key=1已经存在,对应的旧value是6,而3 < 6,不满足value > it->second的更新条件,所以这次调用不会改变表中key=1的value,它仍然是6

因此最终哈希表中key=1对应的是6而不是3,输出里自然只会出现1 6,不会有1 3。

另外需要注意:std::unordered_map是无序容器,它的遍历顺序和元素插入顺序无关,这就是为什么你看到的输出顺序是2、4、1、3,但每个key都保留了调用过程中传入的最大value。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 18:15:36