我是 C++ 的新手,我想知道为什么我的代码只在某些情况下失败。每当 N > 3 时,就会出现 Debug Assertion Failed?我很确定我只调用了现有的 vector 值。 任何帮助,将不胜感激!谢谢!
我的代码如下:
#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()) 的调用。它正在删除 vector 中的所有元素。
关于c++ - 调试断言仅在某些情况下失败? C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49972117/