3D矢量在球体上迭代

我有一个3D向量,并希望对到某个点的距离有限的所有邻居进行迭代(即在一个球体上)。我决定使用“曼哈顿距离”代替“欧几里得距离”,以使其更加整洁。 我的方法如下所示,但不幸的是并没有给我所有的邻居。

std::vector<std::vector<std::vector<unsigned int>>> table;
int x = 5;
int y = 1;
int z = 3;
int MAX_X = 100;
int radius = 5;

for (int neighbor_x = x - radius; neighbor_x <  x + radius; ++neighbor_x) {
  for (int neighbor_y = y - (radius - neighbor_x); neighbor_y < y + radius; ++neighbor_y) {
    for (int neighbor_z = z - (radius - neighbor_x - neighbor_y); neighbor_z < z + radius; ++neighbor_z) {
      std::cout << table[neighbor_x][neighbor_y][neighbor_z] << "\n";
    }

  }
}

在推理中我会在哪里犯错误?为什么这样不起作用?