C++ 初始化二维结构数组

标签 c++ arrays

我正在编写一个允许用户玩数独游戏的程序。每个谜题都是一个二维结构数组,但我无法一次性初始化数组。有什么方法可以做到这一点而无需为数组的每个元素初始化结构的每个部分?这是我的一些代码。

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/

相关文章:

arrays - 为什么 AWK 不将此数组索引视为数字,除非我使用 int()?

c++ - 由于字符数组到指针衰减而无法推导非类型模板参数?

C++:函数包装器是否与内联一起工作?

c++ - PyTorch C++ 前端向前返回多个张量

c - #include C 中数组语法库?

javascript - 在 forEach 数组中使用 for 循环

c++ - 从缓冲区创建 QImage,没有深拷贝?

c++ - 如何使用模板中的放置删除/新建来重置类?

javascript - 我的嵌套循环不起作用

c++ - std::copy 用于多维数组