如何在C ++中进行多维度?

时间:2016-04-29 13:33:45

标签: c++ arrays

我有这个数组

int sequence[2][3][2][2][50][2] = {
{
    {1},
    {{
      {2, 4}, 
      {3, 5}
     },
     {255,0,0}
    }
  },
  {
    {2},
    {{
      {3, 4}, 
      {2, 6}
     },
    {0,0,255}
    }
  }
};

每当我尝试使用

索引第一个多维数组时
int frame[2] = {sequence[1]}

我收到此错误"' int(*)[2] [2] [50] [2]'到' int' [-fpermissive]

我做错了什么?

1 个答案:

答案 0 :(得分:1)

  

每当我尝试使用

索引第一个多维数组时
int frame[2] = {sequence[1]}

让我们简化您使用的语法:

int frame[2] = {/*list of ints*/}

使用括号括起的整数列表初始化一个2 int的一维数组。

具有arity k的最外层多维数组的元素也是一个多维数组(具有arity k-1)。它不是int

因此,如何索引多维数组没有任何问题。有问题的是,如果int以多维数组作为第一个值,则尝试初始化数组。

  

我应该如何初始化呢?

无法回答,因为不清楚要用于初始化的多维数组中的哪个整数值。

这是一种初始化frame的语法正确方法:

int frame[2] = {sequence[0][0][0][0][0][0], sequence[0][0][0][0][0][1]};

它使用最外层数组第一个子数组的第一个子数组的第一个子数组的第一个子数组的第一个子数组中的值。