C++有关函数返回的报错


vector<int> twoSum(vector<int>& numbers, int target) {
        vector<int> ans;
      
        int len = numbers.size();
        for (int index2 = 1;index2<len;index2++)
        {
            int t = target-numbers[index2],a = 0,b = index2-1;
            int index1 = find(numbers,a,b,t);
            if (index1>=0)
            {
                ans.push_back(index1+1);
                ans.push_back(index2+1);
                //return ans;
            }
        }
      return ans;

    }

已经确保ans是非空,那么为什么最后一句return ans不能写在注释处?
如果写了会报 error: non-void function does not return a value in all control paths [-Werror,-Wreturn-type]
}

如果写到注释处,如果number是空的,那么函数就没有返回值了。
你能确保ans非空,但是编译器编译的时候无法知晓是否为空,他要考虑所有的可能性。