我正在编写一个允许用户玩数独游戏的程序。每个谜题都是一个二维结构数组,但我无法一次性初始化数组。有什么方法可以做到这一点而无需为数组的每个元素初始化结构的每个部分?这是我的一些代码。
class Sudoku {
protected:
struct Puzz {
int Ans;
// IsClue is used further in the program so the user cannot change the clues given.
bool IsClue;
};
Puzz Puzzle[9][9]; // I chose a 2D array so represent the 9 rows and columns of a sudoku puzzle
};
我尝试了以下一些方法:
Puzzle[][9] = {{0, false, 8, true, 0, false, 6, true, 7, true, 0, false, 0, false, 0, false, 0, false}, //...etc, going on for each row
Puzzle[9][9] = // etc, etc, but I get an error saying "Expected an expression
唯一的办法就是初始化每个元素来做
Puzzle[x][y].Ans = x; Puzzle[x][y].IsClue = true/false;?
最佳答案
问题是您试图赋值给一个数组,而这根本不可能。您需要实际初始化它,这是完全不同的事情。
如果您不介意写很多几乎相同的行,那么您可以使用 constructor member initializer list .比如
Sudoku::Sudoku()
: Puzzle{{...}, {... }, ... }
{}
如果数组中只有少数结构与某些默认值不同,那么您可以将数组中的所有条目设置为相同的默认值,例如使用std::fill
然后更改那些具有特殊值的少数条目。
关于C++ 初始化二维结构数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35075094/