调试断言仅在某些情况下失败?C++

Debug Assertion Failed only with some cases? C++

本文关键字:情况下 失败 C++ 断言 调试      更新时间:2023-10-16

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

我的代码如下:

#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;
}

检查您对 tasks.erase(tasks.begin((, tasks.end((( 的调用。它删除矢量中的所有元素。