我有一些代码,我使用的是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;
}
答案 0 :(得分:1)
int mapx, mapy = 5;
此声明未将这两个值初始化为5
:它声明了两个int
,将mapy
初始化为5
并离开mapx
初始化。使用mapx
是未定义的行为。您的整个for
循环都会被跳过,而访问map[0][0]
的界限则超出范围。
你想要这个:
int mapx = 5, mapy = 5;