gpt4 book ai didi

c++ - 二维数组的数组

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:00:18 26 4
gpt4 key购买 nike

我的问题很难描述,我有两个表格,分别包含很多数字;对于一张表,我通过索引搜索格式

table1   index format  
+------+----+
|0~19 | 0 |
| | |
+------+----+
|20~29 | 1 |
| | |
+------+----+
|30~39 | 2 |
| | |
+------+----+

table2 index resource(f,t0,t1,t2)
0 1 2 3 (configure type)
+----+-----------+---------+---------+
|0 | (0,1,0,2) |(0,1,0,1)|(0,1,0,0)|
+----+-----------+---------+---------+
|1 | (0,2,0,2) |(0,2,0,1)|(0,2,0,0)|
+----+-----------+---------+---------+
|-- | (0,0,1,2) |(0,0,1,1)|(1,0,0,0)|
+----+-----------+---------+---------+
|19 | (0,0,0,0) |(0,0,0,0)|(0,0,1,1)|
+----+-----------+---------+---------+---------+
|-- | (0,0,0,2) |(0,0,0,1)|(0,0,1,0)|(0,2,1,0)|
+----+-----------+---------+---------+---------+
|29 | (0,1,0,2) |(0,1,0,1)|(0,1,0,1)|(0,1,0,1)|
+----+-----------+---------+---------+---------+

希望下面的代码片段能让我明白,

typedef struct my_struct {
int f;
int t0;
int t1;
int t2;
} my_struct;

// for index 0 ~ 19, the following is code snippet
my_struct format0[2][3] = {
{{0, 1, 0, 2}, {0, 1, 0, 1},{0, 1, 0, 0}}, // index 0
{{0, 2, 0, 2}, {0, 2, 0, 1},{0, 2, 0, 0}} // index 1
};

// for index 20 ~ 29, the following is code snippet
my_struct format1[1][4] = {
{{0,0,0,2},{0,0,0,1},{0,0,1,0},{0,2,1,0}} // index 20
};

我有多个二维数组,其中包含按 format 分组的资源,每个数组针对不同的 format 具有不同的尺寸,按 index 排列,按 coled code>configure type 像0,1,2..6,所以我想把它们放到另一个一维数组中,以便通过索引轻松查找,并最终获得资源,但我不知道如何。

我尝试了以下但失败了:

my_struct* group[] = {
format0,
format1
};

然后使用group[0],我可以获得format0,但我发现它忘记了我的[1][2]需要知道,所以我想知道是否有一些解决方案可以帮助我做到这一点?

最佳答案

您的结构似乎没有包含太多实际数组/矩阵的内容。

我会使用这样的东西:

typedef struct
{
size_t width, height;
int *data;
} Matrix2D;

然后定义一个函数来初始化一个实例:

int matrix2d_new(Matrix2D *out, size_t width, size_t height)
{
if(out == NULL || width == 0 || height == 0)
return 0;
if((out->data = malloc(width * height * sizeof *out->data)) != NULL)
{
out->width = width;
out->height = height;
memset(out->data, 0, width * height * sizeof *out->data);
}
return out != NULL;
}

然后你可以简单地构建一个数组:

Matrix2D matrices[3];
matrix2d_new(&matrices[0], 12, 34);
matrix2d_new(&matrices[1], 40, 50);
matrix2d_new(&matrices[2], 20, 50);

错误检查被忽略,但在处理动态内存时当然必须考虑。

关于c++ - 二维数组的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9003996/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com