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

为何C++的unordered_map含vector值时无需初始化vector?

为什么C++的unordered_map无需提前初始化vector就能调用push_back?

核心原因是C++的unordered_map的operator[]具备自动插入默认构造值的特性,和Python普通字典的行为完全不同:

  • 在C++中,当你通过example["example_key"]访问unordered_map时:

    1. 如果该键不存在,operator[]会自动向map中插入一个以该键为索引、值为默认构造的vector<string>(也就是空vector)的键值对
    2. 返回这个刚创建的vector的引用
      所以后续调用push_back是直接对已经存在的空vector操作,自然能正常运行。
  • 而Python的普通字典没有这个自动创建默认值的逻辑:
    当你用example["example_key"]访问不存在的键时,字典不会自动创建对应的键值对,直接抛出KeyError。如果要实现类似C++的效果,Python可以用collections.defaultdict,示例代码如下:

    from collections import defaultdict
    example = defaultdict(list)
    example["example_key"].append("example_elem")
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 05:52:00