如何检查2D数组(C ++)中我周围细胞的邻居?

Unk*_*zdx 1 c++ multidimensional-array

因此,我试图检查任何给定2D数组当前单元格周围的单元格是否具有某个值(0或1),并根据该值我要计算总数(当前单元格周围的总计1个值)我不确定如何抓住下面的位置是我写的一些伪代码,我认为它将考虑一个单元格的每个一般位置,但是我不完全确定它是正确的,如果正确,我就不会确定如何抓住周围的细胞。不必写出完整的代码,但是基本上我正在寻找条件来检查将来要嵌套的if语句的位置,这些if语句将具有这些大的if语句(例如数组) if array([xPosition+1][yPosition+1] == 1)

这是伪代码

if (xPosition==0 && yPosition==0) {


    } else if (xPosition==rows && yPosition==columns) {

    } else if (xPosition==rows && yPosition==0) {

    } else if (xPosition==0 && yPosition==columns) {

    } else if (xPosition==0) {

    } else if (xPosition==rows) {

    } else if (yPosition==0) {

    } else if (yPosition==columns) {

    } else {

    }
Run Code Online (Sandbox Code Playgroud)

Tho*_*lik 5

您可以使用嵌套循环

int sum{0};
for (int x{std::max(xPosition, 1) - 1}; x < std::min(xPosition + 2, columns); ++x) {
    for (int y{std::max(yPosition, 1) - 1}; y < std::min(xPosition + 2, rows); ++y) {
        if (x == xPosition && y == yPosition) continue;
        sum += array[x][y];
    }
}
Run Code Online (Sandbox Code Playgroud)