int a[][5] = {{1},{1,2}};
什么是“该”其第二维的尺寸,并且将
a[0][1]
有什么价值?
谈论大小还是有意义的,还是它不同于“行”到“行”?
这被认为是不好的做法?
int a[][5] = {{1},{1,2}};
什么是“该”其第二维的尺寸,并且将
a[0][1]
有什么价值?
谈论大小还是有意义的,还是它不同于“行”到“行”?
这被认为是不好的做法?
在代码
int a[][5] = {{1},{1,2}};
第一尺寸的大小是2(因为有外{}
内的两个元素),和第二维的尺寸为5的初始化剂未尽元件是初始化为零。因此,您的代码相当于:
int a[][5] = {{1,0,0,0,0},{1,2,0,0,0}};
这是无效的。它甚至不会编译:
test.cc:1:9: error: declaration of ‘a’ as multidimensional array must have bounds for all dimensions except the first
当您使用与阵列的花括号初始化记号,必须指定所有尺寸的阵列是要去所有部件,所以这段代码只给你一个编译时错误。
如果你想拥有一个大小不同的容器数组,可以考虑使用一组向量,或者甚至是一个向量向量。要使用它们,只需执行#include <vector>
即可完成。
这不是有效的C++。除了最慢的尺寸之外,所有尺寸都必须明确指定。 – 2012-02-28 20:21:19
@ Kerrek SB感谢您的指针 – user695652 2012-02-28 20:26:50
如果您修复* all *范围,则允许您将初始化程序作为平面列表编写。但我认为如果将内部维度留为空白,您无法做到这一点。 – 2012-02-28 20:33:43