用C ++定义2D数组

时间:2015-11-22 07:07:43

标签: c++ arrays multidimensional-array

int train [4] [3] = {   0, 0, 0,
                                      0, 1, 0,
                                      1, 0, 0,
                                      1, 1, 1 };

这是C ++中二维数组的有效初始化

行将是0,0,0(第1行),(0,1,0)(第2行),(1,0,0)(第3行)和(1,1,1)(第4行) )?

它等同于

 int train [4] [3] = {{0, 0, 0},
                       {0, 1, 0},
                       {1, 0, 0},
                       {1, 1, 1}};

2 个答案:

答案 0 :(得分:7)

int train [4] [3] = {   0, 0, 0,
                        0, 1, 0,
                        1, 0, 0,
                        1, 1, 1 };

是C ++中2D数组的有效初始化。

来自C ++ 11标准:

  

8.5.1聚合

     

10初始化多维数组时,initializer-clauses初始化元素,数组的最后(最右侧)索引变化最快(8.3.4)。 [示例:

int x[2][2] = { 3, 1, 4, 2 };
     

x[0][0]初始化为3,将x[0][1]初始化为1,将x[1][0]初始化为4,将x[1][1]初始化为{{1} }}。另一方面,

2

初始化float y[4][3] = { { 1 }, { 2 }, { 3 }, { 4 } }; 的第一列(被视为二维数组)并将其余部分保留为零。 - 结束示例]

答案 1 :(得分:2)

是的!它是c ++中有效的初始化。