簡體   English   中英

C ++錯誤:調試斷言失敗

[英]c++ error: debug assertion failed

我試圖在Visual Studio 2010 Pro上運行此程序。 我可以成功編譯它,但是運行程序時出現以下錯誤:

調試斷言失敗! 表達式:向量下標超出范圍。

在這個簡單的程序中,我試圖計算整數向量中連續的非nul數的最大和。

#include "stdafx.h"
#include <iostream>
#include <vector>

using namespace std;
int somme(vector<int> tab);

int main() {
vector<int> tab;
tab[0] = 2;
tab[1] = 3;
tab[2] = 0;
tab[3] = 0;
tab[4] = 4;
cout <<somme_consecutifs_max(tab) << endl;
return 0;
}

 int somme(vector<int> tab){
int sum(0);
int max(0);
for (int i = 0; i < tab.size(); ++i){
    if(tab[i] != 0) {
        sum += tab[i];
    }
    else{
        if(sum > max){
            max = sum;
        }
        sum = 0;
    }

}
    return max;
}

另一方面,為什么我不能在Visual Studio 2010中初始化我的int向量,原因如下:

vector<int> tab = {1, 2, 0, 0, 3};

當你這樣做

vector<int> tab;

您初始化一個大小為0的向量,您可以立即訪問該向量。 你需要

vector<int> tab(5);

制作5號尺寸的矢量。 或者,您可以將元素推回到向量中,每次將大小增加一。

vector<int> tab;
tab.push_back(2);
tab.push_back(3);
....

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM