在C ++中动态初始化多维数组
Initialize multidimensional array dynamically in c++
如何使用 new 动态初始化 ptr:
int values1[4][2] = {{2,3},{-4,0},{3,-7},{2,2}};
int values2[4][2] = {{1,1},{-2,-3},{4,12},{-5,25}};
int (*ptr[2])[4][2] = {&values1,&values2};
我尝试了以下方法,但出现错误:
int *ptr = new int[2*4*2]{&values1,&values2};
关于容器,您可以这样做:
int (*ptr)[4][2];
ptr = new int[2][4][2]{{{2,3},{-4,0},{3,-7},{2,2}},{{1,1},{-2,-3},{4,12},{-5,25}}};
typedef 可以帮助处理这种棘手的代码
int values1[4][2] = { { 2, 3 }, { -4, 0 }, { 3, -7 }, { 2, 2 } };
int values2[4][2] = { { 1, 1 }, { -2, -3 }, { 4, 12 }, { -5, 25 } };
typedef int(*xxx)[2];
int main()
{
xxx* ptr = new xxx[2];
ptr[0] = values1;
ptr[1] = values2;
return 0;
}
老实说,我不知道如果没有 xxx
typedef
你会怎么写
编辑
这似乎是正确的 non-typedef 版本
int(**ptr)[2] = new (int(*[2])[2]);
我不太确定我是否相信。
如何使用 new 动态初始化 ptr:
int values1[4][2] = {{2,3},{-4,0},{3,-7},{2,2}};
int values2[4][2] = {{1,1},{-2,-3},{4,12},{-5,25}};
int (*ptr[2])[4][2] = {&values1,&values2};
我尝试了以下方法,但出现错误:
int *ptr = new int[2*4*2]{&values1,&values2};
关于容器,您可以这样做:
int (*ptr)[4][2];
ptr = new int[2][4][2]{{{2,3},{-4,0},{3,-7},{2,2}},{{1,1},{-2,-3},{4,12},{-5,25}}};
typedef 可以帮助处理这种棘手的代码
int values1[4][2] = { { 2, 3 }, { -4, 0 }, { 3, -7 }, { 2, 2 } };
int values2[4][2] = { { 1, 1 }, { -2, -3 }, { 4, 12 }, { -5, 25 } };
typedef int(*xxx)[2];
int main()
{
xxx* ptr = new xxx[2];
ptr[0] = values1;
ptr[1] = values2;
return 0;
}
老实说,我不知道如果没有 xxx
typedef
编辑
这似乎是正确的 non-typedef 版本
int(**ptr)[2] = new (int(*[2])[2]);
我不太确定我是否相信。