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

标签 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];
...

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

谢谢。

最佳答案

在您的代码中,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 )。

关于c++ - 在外部声明一个数组并使用初始化列表进行初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49357188/

相关文章:

c++ - Armadillo 初始值设定项列表不起作用

javascript - 为什么我的二维数组不返回 true

c++ - g++ 关于声明多维双数组的警告

Python:迭代数组的行和列

c++ - 在 C++ 中通过引用传递二维动态字符串数组

c++ - "abc"[0] 不是编译时常量

javascript - 如何使用base64转换所有数组/对象

更改固定的二维数组以获取运行时给定的大小

c++ - 默认字符串流格式与 snprintf 的格式相同吗?

c++ - 如何使用 STL 集找到第一个小于搜索键的值?