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

标签 c++ arrays

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/

相关文章:

node.js - 如何在 MongoDB 中 findOne 之后仅显示数组的一部分?

c++ - 如何将 QEvents 传递给子部件?

c++ - 传递嵌套仿函数 (C++)

c++ - 字符串的运算符重载

c++ - 阵列平衡点

javascript - 计算并删除 JavaScript 数组中的重复项

c++ - C 方法是否可能无法包含在 C++ 项目中?

c - strcpy() 不适用于某些字符串,但不适用于其他字符串

C++ 将包含数字和单词的文本文件列表转换为整数二维数组

C# 从 list<decimal> 到 double 数组的转换