在外部声明一个数组并使用初始化列表进行初始化

时间:2018-03-19 06:47:23

标签: c++ multidimensional-array

我在初始化2D int数组时遇到问题。 我的程序结构是:

int arr[2][2];
if(val==1)
 arr = {{1,1}, {2,2}};
else if (val==2)
 arr = {{3,3}, {4,4}};
...
...

int x = arr[1][1];
...

我收到错误"表达式必须是可修改的左值"

感谢。

2 个答案:

答案 0 :(得分:7)

在您的代码中,arr = {{1,1}, {2,2}}; 不是初始化。如果你坚持原生阵列,我恐怕你必须手动设置每个元素。

但是,您可以切换为使用std::array,它可以提供您想要的内容:

array<array<int, 2>, 2> arr;
if (val == 1)
    arr = { { { 1,1 }, { 2,2 } } };
else if (val == 2)
    arr = { { { 3,3 }, { 4,4 } } };

int x = arr[1][1];

请注意额外的大括号(请参阅here)。

答案 1 :(得分:3)

初​​始化

int arr[2][2] = {{3,3}, {4,4}};

修改

arr[0][0] = 3;
arr[0][1] = 3;
arr[1][0] = 4;
arr[1][1] = 4;