-1
這是一個較大的基本掃雷程序的一部分。在這個程序的主要cpp文件中,我將一個矩陣的所有值加載到int類型的2d向量中。基本上這個矩陣是用1和0填充的,它將用來表示礦山是否在那裏。我已經通過cout確認了原始矢量和參考矢量都輸出了我裝入它們的矩陣。C++中的2D矢量問題
我已經創建了一個包含3個不同條件的struct cell,我可以創建一個類型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在構造函數或其他函數中都沒有聲明。
是什麼'minesweeperBoard'和你在哪裏申報/初始化呢? – user463035818
還有更多的錯誤,不會讓這段代碼編譯。請提供[mcve](http://stackoverflow.com/help/mcve) – user463035818
對不起,上面的代碼只是項目的一個片段。掃雷艇實際上是一個班級,這是其中的一個功能。 minesweeperBoard是一個私人成員,被宣佈爲矢量> minesweeperBoard; –