Debug Assertion仅在某些情况下失败? C ++

时间:2018-04-23 00:57:56

标签: c++ debugging

我对C ++很陌生,我想知道为什么我的代码在某些情况下才会失败。每当N> 3,Debug Assertion Failed出现了吗?我很确定我只调用了现有的矢量值。 任何帮助,将不胜感激!谢谢!

我的代码如下:

#include <iostream>
#include <string>
#include <vector>
#include <algorithm>

using namespace std;

int main() {
    int N, input, sum=0;
    vector <int> tasks;

    cin >> N;
    for (int a = 0; a <= N-1 ; a++){
        cin >> input;
        tasks.push_back(input);
    }

    sort(tasks.begin(), tasks.end());

    if(N%2==0){
        for (int i = 0; i<=N/2-1; i++) {
            sum += 2 * tasks.front()*tasks.back();
            tasks.erase(tasks.begin(), tasks.end());
        }
    }
    else {
        sum += tasks[(N + 1) / 2-1] * tasks[(N + 1) / 2-1];
        tasks.erase(tasks.begin()+(N-1)/2);

        for (int i = 0; i <= (N-2) / 2; i++) {
            sum = sum + 2*tasks.front()*tasks.back();
            tasks.erase(tasks.begin(), tasks.end());
        }
    }

    cout << sum << endl;
    system ("pause");
    return 0;
}

1 个答案:

答案 0 :(得分:1)

检查你对tasks.erase(tasks.begin(),tasks.end())的调用。它删除了向量中的所有元素。