首页 > 解决方案 > 这两个数组声明有什么区别?

问题描述

我想知道这两个数组声明的区别,一个是这样定义的(double array[a][b][c][d]),另一个是不同的(double array[a*b*c][d]

double weight4_5[LAYER4][LAYER5][LENGTH_KERNEL][LENGTH_KERNEL];
double weight5_6[LAYER5 * LENGTH_FEATURE5 * LENGTH_FEATURE5][OUTPUT];

如果我想用 for 循环将值加载到这两个数组中,我该怎么做?

标签: carraysfor-loop

解决方案


第一个是 4 维数组。

  • 访问是由weight4_5[i][j][k][l]

第二个是二维数组。它是一个扁平数组。

  • 访问基本上是通过,但是需要根据4D原始数组weight5_6[x][y]做一些计算得到的值。x
  • 您可以根据需要以多种方式组织它(例如,按行、按列等)一种方法是让

    x= ((((i*LAYER5)+j)*LENGTH_FEATURE5)+k)
    y = l;
    

推荐阅读