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

请求详细解释代码中map[arr[i]]++语句的作用

详解C++代码中map[arr[i]]++的执行逻辑

先明确这段代码的功能:它用来找出数组中第一个存在重复的元素的1-based索引——如果某个元素在数组里出现至少两次,就返回它第一次出现的位置;如果所有元素都不重复,返回-1。

下面重点拆解核心语句map[arr[i]]++的执行逻辑:
这里用到的是C++的unordered_map<int, int>(键和值都是int类型的哈希表),结合operator[](方括号)和++操作,执行逻辑分两种情况:

情况1:当前元素arr[i]未在map中出现过

  1. 当通过map[arr[i]]访问时,因为哈希表里没有这个键,unordered_map会自动插入一个新的键值对:键为arr[i],值被初始化为int类型的默认值0
  2. 紧接着执行++操作,把刚初始化的0改成1,完成该元素的第一次计数

情况2:当前元素arr[i]已在map中存在

  1. map[arr[i]]直接返回该键对应值的引用(也就是之前统计过的出现次数)
  2. 执行++操作,把这个次数加1,实现出现次数的累加

实际示例

比如数组为[2, 3, 2, 1],第一次循环的执行过程:

  • i=0,arr[i]=2:map中无2,插入{2:0}后++变为{2:1}
  • i=1,arr[i]=3:map中无3,插入{3:0}后++变为{3:1}
  • i=2,arr[i]=2:map中已有2,对应值为1,++变为{2:2}
  • i=3,arr[i]=1:map中无1,插入{1:0}后++变为{1:1}

统计完成后,第二次遍历数组时,第一个遇到对应map值≥2的元素是i=0的2,因此返回0+1=1,符合预期。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 14:10:27