gpt4 book ai didi

c++ - 在C++中的一维数组中实现二维数组坐标

转载 作者:行者123 更新时间:2023-11-30 05:04:02 24 4
gpt4 key购买 nike

for 循环中的代码用于二维数组中的 x 和 y(j 和 i)“坐标”。我如何在一维数组中实现这个邻居/索引查找?我想我可以为前四个方程式实现它。但我对如何实现左上等感到困惑。

for(int i=0; i<cols*rows; i++){
//Counts current index's 8 neigbour int values
int count=0;
int x = i%cols;
int y = i/rows;
//rows y i
//cols x j

count+= [grid][i][(j-1+cols)%cols] //left
+[grid][i][(j+1+cols)%cols] //right
+[grid][(i-1+rows)%rows][j] //up
+[grid][(i+1+rows)%rows][j] //down
+[grid][(i-1+rows)%rows][ (j-1+cols)%cols] //up-left
+[grid][(i+1+rows)%rows][ (j+1+cols)%cols] //down-right
+[grid][(i+1+rows)%rows][ (j-1+cols)%cols] //down-left
+[grid][(i-1+rows)%rows][ (j+1+cols)%cols] ;//up-right
}

最佳答案

从一维 vector 开始:

int rows = 10;
int cols = 10;
vector<int> grid(rows * cols);

你可以用不同的方式来管理它,例如

for(int y = 0; y < rows; y++)
{
for(int x = 0; x < cols; x++)
{
int point = grid[y * rows + x];
}
}

您可以访问二维平面中任意给定 xy 的任意点。

左上角是:

x = 0;
y = 0;

右下角是

x = cols - 1;
y = rows - 1;

等等。

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

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