Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/148.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何将一个矩阵存储在C++;?_C++_Matrix - Fatal编程技术网

C++ 如何将一个矩阵存储在C++;?

C++ 如何将一个矩阵存储在C++;?,c++,matrix,C++,Matrix,我的代码如下: #define ROWS 3 #define COLUMNS 3 int main() { int fields[COLUMNS][ROWS]; int **sudoku[COLUMNS][ROWS]; sudoku[0][0] = fields; return 0; } 我想在数独中存储字段,正确的语法是什么? 如何将一个矩阵存储在另一个矩阵的行中 或者可以使用std::array using Fields = array<ar

我的代码如下:

#define ROWS    3
#define COLUMNS 3

int main()
{
    int fields[COLUMNS][ROWS];
    int **sudoku[COLUMNS][ROWS];
    sudoku[0][0] = fields;

    return 0;
}
我想在数独中存储字段,正确的语法是什么? 如何将一个矩阵存储在另一个矩阵的行中

或者可以使用std::array

using Fields = array<array<int, ROWS>, COLUMNS>;
Fields fields;
array<array<Fields, ROWS>, COLUMNS> sudoku;
sudoku[0][0] = fields; // this will copy the data
使用字段=数组;
田地;
数组数独;
数独[0][0]=字段;//这将复制数据
或者可以使用std::array

using Fields = array<array<int, ROWS>, COLUMNS>;
Fields fields;
array<array<Fields, ROWS>, COLUMNS> sudoku;
sudoku[0][0] = fields; // this will copy the data
使用字段=数组;
田地;
数组数独;
数独[0][0]=字段;//这将复制数据


int**
是指针数组,而不是二维数组。使用
std::vector
和智能指针,而不是数组和指针。事实上,
sudoku
是指向int的指针数组。它认为这实际上比
int****
(指向指向int的指针的指针)。代码中需要很多typedef,最好是一些结构。我不太明白这个问题。@MartinBonner我想他希望在每个3x3“数独”字段中都有一个3x3字段(创建一个9x9网格)
int**
是指针数组,而不是二维数组。使用
std::vector
和智能指针,而不是数组和指针。事实上,
sudoku
是指向int的指针数组。它认为这实际上比
int****
(指向指向int的指针的指针)更复杂。您的代码中需要大量的typedef,最好是一些结构。我不太明白这个问题。@MartinBonner我想他希望在每个3x3“数独字段”(创建一个9x9网格)中加上1作为
std::array
解决方案。谢谢!您会重新使用静态转换(字段)吗而不是C cast?具有cast的版本允许赋值,但您仍然无法使用该指针访问数组元素,因为它需要
sudoku[0][0]
成为指向指针的指针,而不是指向数组的指针。@BrianFiszman是的,但听听Barmar刚才说的。如果你允许使用std::array,那可能是你想要的。@BrianFiszman对于3by3这样大小的数据肯定是的。而且你的数据几乎不会太大,对big sudok来说还没有见过;)所以,std::array是这里的选择。对于
std::array
解决方案,加上1。谢谢!您是否建议使用static_cast(fields)而不是C cast?带有cast的版本允许赋值,但您仍然无法使用该指针访问数组元素,因为它希望
sudoku[0][0]
是指向指针的指针,而不是指向数组的指针。@BrianFiszman yes,但是听听巴尔马刚才说的。如果您允许使用std::array,这可能是您想要的。@BrianFiszman对于3by3这样大小的数据肯定是的。而且你的数据几乎不会太大,因为你还没有看到大苏杜克;)因此,这里的选择是std::array。