我在初始化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];
...
我收到错误"表达式必须是可修改的左值"
感谢。
答案 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;