2D-векторная проблема в переполнении стека

это часть большой основной программы тральщика. В главном файле cpp этой программы я загружаю все значения матрицы в двумерный вектор типа int. В основном эта матрица заполнена единицами и 0, которые будут использоваться для указания наличия шахты или нет. Через cout я подтвердил, что и исходный вектор, и ссылочный вектор выводят матрицы, которые я загружал в них.

Я создал структурную ячейку, которая содержит 3 различных условия, в которых она может быть. Я создал 2-й вектор ячейки типа, который в основном создает 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 вообще не объявлен ни в конструкторе, ни в другой функции.

-1

Решение

Дай угадаю: ты перевернул порядок rows а также columns в этой декларации

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

и должно быть

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

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]