gpt4 book ai didi

c - 访问相邻单元格中的数据

转载 作者:行者123 更新时间:2023-11-30 16:43:43 25 4
gpt4 key购买 nike

我有一个大小为 m x n 的矩阵 M,它被保存为长度为 m * n< 的一维数组 N/。该数组的每个单元格都包含一些整数变量,它们是数据点的 ID。每个单元格中整数变量的数量随着时间的推移而变化。

N[0] = {1,4,5,7}
N[1] = {2,9,3,1,7,4}
N[2] = {7,1,3,9,8}
N[3] = {6,4,2}
...

我通过使用返回的索引函数来访问这些元素

idx = x + y * n

给定一些索引idx,我想使用相邻单元格和具有索引idx的中心单元格的所有整数变量来访问数据点数组D 大小为 ss 的大小可以非常大。

为了明确我的观点:而不是对所有数据点进行这样的循环

for(int i=0; i<s; i++)
// Do something with D[i]

我想要类似的东西(但更紧凑)

// Access central cell
idx = x + y*n;
num_Elements = Number_of_Elements_Cell(x,y);
for(int i=0; i<num_Elements; i++)
// Do something with D[N[idx][i]]

// Access right cell
idx = (x+1) + y*n;
num_Elements = Number_of_Elements_Cell(x+1,y);
for(int i=0; i<num_Elements; i++)
// Do something with D[N[idx][i]]

// Access left cell
idx = (x-1) + y*n;
num_Elements = Number_of_Elements_Cell(x-1,y);
for(int i=0; i<num_Elements; i++)
// Do something with D[N[idx][i]]

等等。对于所有单元格,我必须执行 9 次。

我的问题:给定结构N,是否有更好的方法来做到这一点?

最佳答案

我不确定我是否很好地理解了你的问题......但你可以尝试:

for (int i=-1 ; i <= 1 ; i++){
for (int j = -1 ; j <=1 ; j++){
idx = (x+i) + (y+j)*n;
// Check if idx is not out of bounds
num_Elements = Number_of_Elements_Cell(x+i,y+j);
for(int k=0; k<num_Elements; k++)
// Do something with D[N[idx][k]]
}
}

请注意,您的索引很可能会超出这种方法的范围,因此您必须实现测试来防止这种情况发生。

这是使用双 for 循环简单迭代单元格及其 8 个邻居的方法。如果这不是您所期望的,请告诉我,我将编辑/删除。

关于c - 访问相邻单元格中的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45009034/

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