2017-02-01 4 views
-2

У меня есть код, который я написал, используя 2d-вектор вместо 2d-массива, однако, когда я запускаю его, все, что он говорит, это «векторный индекс вне диапазона», , любая помощь приветствуется.C++ Debug Assertion Failed Vector Subscript за пределами допустимого диапазона

#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 с, инициализацией mapy в 5 и оставляя mapx неинициализированным. Использование mapx - это неопределенное поведение. Весь цикл for пропущен, а доступ к map[0][0] - вне границ.

Вы хотите:

int mapx = 5, mapy = 5; 
Смежные вопросы