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

标签 c++ debugging

我是 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/

相关文章:

c++ - 试图让 curl 在 c++ linux 和 GDB 中工作

c++ - 为什么函数指针不被通用引用捕获?

c++ - std::vector<std::string> 崩溃

c# - 在 VS2008 中,有没有办法自动 "Attach to Process"?

c - 在变量被释放时中断

c++ - tlb 文件是否具有关联架构?

c++ - vector 中的 vector - 更改特定元素

linux - kubernetes 中的子进程

c++ - 使用 C++(windows) 在 VS 代码中调试 C++ 时出错

c++ - 控制 VS 2008/2010 中的尾随结构填充? (#pragma pack 还不够好)