我正在尝试设置一些不同的多维数组,但无法弄清楚为啥这不起作用
Posted
技术标签:
【中文标题】我正在尝试设置一些不同的多维数组,但无法弄清楚为啥这不起作用【英文标题】:I'm trying to setup a few different multidimensional arrays and cant figure out why this isnt working我正在尝试设置一些不同的多维数组,但无法弄清楚为什么这不起作用 【发布时间】:2016-04-05 02:19:06 【问题描述】:数组 a 和 b 很好,c 表示初始化值过多,d 将 -858993460 分配给每个字段。感谢任何 cmets 和帮助。这是上课的,所以我想了解一下情况!
int a[2][2] = 1, 2, 3, 4 ;
int b[2][3] = 9, 8, 7, 6, 5 ;
int c[3][2] = 4, 4, 4 , 7, 7 ;
int d[3][3] = 1, 1, 1, 1, 1, 1 ;
【问题讨论】:
int b[2][3]
表示“2 个 3 个整数数组”而不是“1 个 2 个整数数组后跟 1 个 3 个整数数组”。一旦你理解了这一点,你应该能够看到哪里出了问题。多维数组不能容纳不同大小的数组,如果在同一个容器中需要不同大小的数组,则需要使用std::vector<std::vector<int>>
或平面数组和手动索引计算。
【参考方案1】:
数组c
的元素具有int[2]
类型。因此,数组的每个元素最多必须使用两个初始化器来初始化。
代替
int c[3][2] = 4, 4, 4 , 7, 7 ;
^^^^^^^^^^^
举个例子
int c[3][2] = 4, 4 , 7, 7 ;
^^^^^^^^
数组 d 已正确初始化。
int d[3][3] = 1, 1, 1, 1, 1, 1 ;
它的初始化等价于下面
int d[3][3] =
1, 1, 1,
1, 1, 1,
0, 0, 0
;
您似乎得到了不正确的值,因为您在访问数组时使用了错误的索引。
这是一个用 C++ 编写的演示程序,用于显示数组。
#include <iostream>
int main()
int a[2][2] =
1, 2 ,
3, 4
;
int b[2][3] =
9, 8 ,
7, 6, 5
;
int c[3][2] =
4, 4 ,
7, 7
;
int d[3][3] =
1, 1, 1 ,
1, 1, 1
;
for ( const auto &row : a )
for ( int x : row ) std::cout << x << ' ';
std::cout << std::endl;
std::cout << std::endl;
for ( const auto &row : b )
for ( int x : row ) std::cout << x << ' ';
std::cout << std::endl;
std::cout << std::endl;
for ( const auto &row : c )
for ( int x : row ) std::cout << x << ' ';
std::cout << std::endl;
std::cout << std::endl;
for ( const auto &row : d )
for ( int x : row ) std::cout << x << ' ';
std::cout << std::endl;
std::cout << std::endl;
程序输出是
1 2
3 4
9 8 0
7 6 5
4 4
7 7
0 0
1 1 1
1 1 1
0 0 0
未显式初始化的数组元素被隐式初始化为零。
【讨论】:
感谢您这么快的回复。这绝对帮助我弄清楚了。我明白我做错了什么。再次感谢! @phillis 完全没有。我们初学者应该互相帮助。:)以上是关于我正在尝试设置一些不同的多维数组,但无法弄清楚为啥这不起作用的主要内容,如果未能解决你的问题,请参考以下文章