C ++中的2D矢量问题

莎丽雅(Sharyar Khan)

这是一个较大的基本扫雷程序的一部分。在该程序的主cpp文件中,我将矩阵的所有值加载到int类型的2d向量中。基本上,此矩阵用1和0填充,这将用于指示是否存在地雷。我已经通过cout确认了原始向量和参考向量都输出了我加载到它们中的矩阵。

我创建了一个struct单元格,其中包含3种各种条件。我创建了一个类型为cell的2d向量,它基本上同时创建了3个向量。我在将引用的矢量值1和0加载到minesweeperBoard [i] [j] .isMine中时遇到麻烦。

这是我的代码:

include <iostream>
include <vector>

using namespace std;

struct cell{
int state;                      //( 0 hidden, 1 revealed, 2 marked)
int value;                      //(-1 mine, 0 no surrounding, # > 0 number of surrounding mines)
bool isMine;
};


void minesweeper(int row, int col, int numOfMines, vector<vector<int> >&mineField) {

rowNum = row;
colNum = col;
minesNum = numOfMines;

    int temp;

for (int i = 0; i < rowNum; i++) {
        for (int j = 0; j < colNum; j++) {
        temp=mineField[i][j];
            if (temp ==0) {
                minesweeperBoard[i][j].isMine = false;  //will set minesweeper to false if the condition is met
            }
            else {
                minesweeperBoard[i][j].isMine = true;   //wil set minesweeper to true if the condition is met
            }
        }
    }
}

程序正在编译,但到达此点时将引发错误。我在做错的是这不是我应该如何将状态转移到isMine向量。

在我的主文件中,我打开文件并读取几段数据,行,列和地雷数量。然后,文件包含上述行和列的巨大矩阵,我将它们馈入向量。然后,我通过向量。请记住,原始的void函数实际上是一个类成员,因此在主体中的声明与此类似。希望我不要让你们感到困惑。

 file >> rows >> columns >> mines;

//declare mine field vector of int
vector<vector<int> > mineField(rows, vector<int> (columns));


//Set's the elements of the .txt matrix to an array
for (int i = 0; i < rows; i++){
    for (int j = 0; j < columns; j++){
        file_difficulty >> mineField[i][j];
    }
}

minesweeper:minesweeper play(columns, rows, mines, mineField);

刚刚意识到minesweeperBoard根本没有在构造函数或其他函数中声明。

最高66

让我猜:您在此声明中颠倒了rows的顺序columns

minesweeper:minesweeper play(columns, rows, mines, mineField);

并且应该是

minesweeper:minesweeper play(rows, columns, mines, mineField);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章