C ++中的运行时错误

时间:2015-01-10 08:31:31

标签: c++ vector runtime-error

我在运行良好的代码块上运行此程序,但在在线判断中,它为输入相同的输入提供了运行时错误。 我无法弄清楚这个错误的原因是什么。

    vector<int> twoSum(vector<int> &numbers, int target)
    {

     vector<int> c ;

    sort(numbers.begin(),numbers.end()-1);

    vector<int>::iterator i = numbers.begin();
    vector<int>::iterator j = numbers.end()-1;

    while(i<=j)
    {
        int sum = *i + *j;
        if(sum==target)
                           { c.push_back(i-numbers.begin());
                             c.push_back(j-numbers.begin());
                             //cout<<*i<<" "<<*j<<endl;
                             break;

                           }
        else if(sum<target) i++;
        else j--;
    }
    return c;
}

1 个答案:

答案 0 :(得分:7)

sort(numbers.begin(),numbers.end()-1);

在空numbers向量上调用此方法会导致运行时错误。它应该是sort(numbers.begin(), numbers.end());