繁体   English   中英

C++ 中的二维向量问题

[英]2D vector issue in c++

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

我创建了一个包含 3 个不同条件的结构单元格。我创建了一个单元格类型的二维向量,它基本上同时创建了 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 向量。

在我的 main 中,我打开文件并读取几条数据、行、列和地雷数量。 然后该文件包含一个巨大的行和列矩阵,我将其输入到向量中。 然后我传递向量。 请记住,原始的 void 函数实际上是一个类成员,因此 main 中的声明类似于它。 我希望我没有让你们感到困惑。

 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 根本没有在构造函数或其他函数中声明。

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

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

并且应该是

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM