当尝试使用“Cell”初始化此向量时,会出现错误的访问错误
struct Cell{
int cellVal;
bool visited;
int xPos;
int yPos;
};
vector<vector<Cell>> grid;
vector<Cell> path(15);
vector<Cell> monsterPath(15);
int main() {
grid.reserve(15);
for(int row = 0; row <=1; row++){
for(int col = 0; col <=15; col++){
grid[col].reserve(15);
grid.emplace_back(Cell{1,false,row,col});
}
}
我似乎无法弄明白为什么。经过一些谷歌搜索后,我认为它与内存被取消引用或丢失有关,但似乎无法弄清楚究竟发生了什么。任何帮助都会非常感激。感谢。
if((!grid[path[curX].xPos - 1][path[curX].yPos].visited) && //cell being checked is (x-1, y)
!grid[path[path.size() - 1].xPos - 1][path[path.size() - 1].yPos - 1].visited && //check cell x-1, y-1
!grid[path[path.size() - 1].xPos - 2][path[path.size() - 1].yPos].visited && //check cell x-2, y
!grid[path[path.size() - 1].xPos][path[path.size() + 1].yPos + 1].visited) //check cell x, y+1
{
grid[path[path.size()-1].xPos - 1][path[path.size()-1].yPos].cellVal = 0;
grid[path[path.size()-1].xPos - 1][path[path.size()-1].yPos].visited = true;
path.emplace_back((grid[path[path.size()-1].xPos - 1][path[path.size()-1].yPos]));
cout << "path constructed" << endl;
}
感谢@ user0042,上面的代码段不再引发错误的访问错误。但是,我的下一个代码段会抛出完全相同的错误,特别是if语句中的第一行。
public Display(JFrame frame){
this.frame = frame;
}
答案 0 :(得分:0)
该行
for(int col = 0; col&lt; = 15; col ++)
似乎错了,因为您可以索引的最高元素是14,而不是15.您应该将&lt; =替换为&lt;。
对于您的其他代码,我不知道curX,xPos,curY和yPos的内容是什么,但请确保它们不大于您的数组大小 - 1。