leetcode two sum的问题

给定一个整数数组,找出其中两个数满足相加等于你指定的目标数字。

要求:这个函数twoSum必须要返回能够相加等于目标数字的两个数的索引,且index1必须要小于index2。请注意一点,你返回的结果(包括index1和index2)都不是基于0开始的。

你可以假设每一个输入肯定只有一个结果。

举例:

输入:numbers={2, 7, 11, 15}, target = 9

输出:index1 = 0 index2 =1

vector twoSum(vector& nums, int target) {
unordered_map imap;

for (int i = 0;; ++i) {
    auto it = imap.find(target - nums[i]);

    if (it != imap.end()) 
        return vector<int> {i, it->second};

    imap[nums[i]] = i;
}

}

想问为何是在最后面给map赋值?
在if前面赋值会报错

先要判断迭代器是否到达了imap的最后位置,否则i会越界