新手求教:一个简单的函数出现段错误的原因?

在牛客网上做题。不知道为什么加上
if (array[i][0]>target)break;这句代码之后会显示段错误??

    bool Find(int target, vector<vector<int> > array) 
{
    for(int i=0;i<array.size();i++)
    {  
        if (array[i][0]>target)break;//为什么加上这句代码之后显示段错误?
        for(int j=0;j<array[i].size();j++)
        {
            if (array[i][j]==target)return true;
        }
    }
    return false;
}

if (array[i][0]>target) break;
if (array[i][j]==target) return true;
请在break 和return前加上空格

if (array[i][0]>target)break;这句出现错误说明引用了违法内存,也就是array中没有指定索引的元素,鉴于你前边用了循环array.size()
说明array[i]是正常的,但是array[i]可能一个元素都没有,所以直接array[i][0]直接这样引用会引发段错误,你可以输出一下array[i].size()试试,看看是不是0

1.要么判断一下array[i].size()是不是大于0
2.将你的if移到第二个for循环里面去

确定你的array[i][0]访问有效??