C ++ Debug Assertion失败的向量下标超出范围

时间:2017-02-01 21:41:22

标签: c++ vector

我有一些代码,我使用的是2d矢量而不是2d数组,但是当我去运行时,它说的是“矢量下标超出范围”。任何帮助表示赞赏。

#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;
}

1 个答案:

答案 0 :(得分:1)

int mapx, mapy = 5;

此声明未将这两个值初始化为5:它声明了两个int,将mapy初始化为5并离开mapx初始化。使用mapx是未定义的行为。您的整个for循环都会被跳过,而访问map[0][0]的界限则超出范围。

你想要这个:

int mapx = 5, mapy = 5;