繁体   English   中英

在 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 你会怎么写

编辑

这似乎是正确的非 typedef 版本

int(**ptr)[2] = new (int(*[2])[2]);

我不太确定我相信它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM