2017-02-01 100 views
-2

我有一些代碼,我已經寫了使用2d矢量而不是2d數組但是當我去運行它所說的是「矢量下標超出範圍」 。任何幫助表示讚賞。C++調試斷言失敗矢量下標超出範圍

#include <iostream> 
#include <vector> 

using namespace std; 

int mapx, mapy = 5; 

vector<vector<int>> map(mapx, vector<int> (mapy, 0)); 

int i, x; 

int main(){ 

for (i = 0; i < map.size(); i++){ 
    for (x = 0; x < map[i].size(); x++) 
    { 
     map[i][x] = i + x; 
    } 
} 

cout << map[0][0]; 

cin >> i; 
return 0; 
} 
+2

'INT mapx'未初始化。看起來像這樣修復:http://coliru.stacked-crooked.com/a/084aea611a4975d0 –

+0

確定最後的評論讓我意識到我的錯誤,現在它的工作,謝謝。 – andrew

回答

1
int mapx, mapy = 5; 

這種說法是不初始化這兩個值5:它聲明兩個int S,初始化mapy5和離開mapx初始化。使用mapx是未定義的行爲。您的整個for循環被跳過,並且訪問map[0][0]超出界限。

你想這樣的:

int mapx = 5, mapy = 5;