c++ - 多维数组初始化

标签 c++ c multidimensional-array

今天在C++考试中看到一道题:

给定数组 int Multi[2][3][2] = {14,11,13,10,9,6,8,7,1,5,4 ,2}, Multi[1][1][0]的值是多少?

不应该像这样初始化 3 维数组:{{{},{}},{{},{}},{{},{}}}?我怎样才能找到具有这种 indeces 的元素的值?太困惑了。

最佳答案

您可以通过两种方式初始化数组,但建议使用花括号,因为它可以提高可读性。

查找非大括号格式的多维数组的元素值的最简单方法是拆分数组。例如,您的数组尺寸为 2x3x2:

首先将数组拆分为 2 个集合 (2x3x2)

{14,11,13,10,9,6,8,7,1,5,4,2} --> {{14,11,13,10,9,6}, {8,7,1,5,4,2}}

然后将每个集合分成 3 个集合 (2x3x2)

{{14,11,13,10,9,6},{8,7,1,5,4,2}} --> {{{14,11}, {13,10} ,{9,6}}, {{8,7}, {1,5}, {4,2}}}

现在,如您所见,每个较小的集合 (2x3x2) 中都剩下 2 个元素,因此您已经用大括号格式化了数组。

现在查找索引为 [1][1][0] 的元素的值更简单了。此元素是第二个 ([1][1][0]) 较大集合的第二个 ([1][1][0]) 较小集合的第一个 ([1 ][1][0]) 元素,所以答案是 1


话虽如此,这样的试题表明你的老师缺乏专业精神,他们更感兴趣的是滥用编程语言语法,而不是教授基本的初始化规则。

关于c++ - 多维数组初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30350699/

相关文章:

C++ while 循环问题

c++ - while 循环是否总是占用全部 CPU 资源?

java - 从scala访问java二维 vector

c++ - 如何在 C++ 中的嵌套词法作用域可访问的作用域中声明静态信息?

c++ - 在模板类上调用的析构函数过多 (N)RVO 优化

c++ - 从 'char*' 到 'char' 的无效转换

c - 使用 va_args 打印另一个参数

对 Linkfloat 的使用感到困惑

javascript - 使用 AngularJS 迭代多维 Json(Ng-Repeat)

arrays - 如何从矩阵中获取 ndgrid?