我对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;
}
答案 0 :(得分:1)
检查你对tasks.erase(tasks.begin(),tasks.end())的调用。它删除了向量中的所有元素。