2012-02-28 201 views
-1

在阵列2dim阵列具有不同尺寸的第二尺寸

int a[][5] = {{1},{1,2}}; 

什么是“该”其第二维的尺寸,并且将

a[0][1] 

有什么价值?

谈论大小还是有意义的,还是它不同于“行”到“行”?

这被认为是不好的做法?

+1

这不是有效的C++。除了最慢的尺寸之外,所有尺寸都必须明确指定。 – 2012-02-28 20:21:19

+0

@ Kerrek SB感谢您的指针 – user695652 2012-02-28 20:26:50

+1

如果您修复* all *范围,则允许您将初始化程序作为平面列表编写。但我认为如果将内部维度留为空白,您无法做到这一点。 – 2012-02-28 20:33:43

回答

1

在代码

int a[][5] = {{1},{1,2}}; 

第一尺寸的大小是2(因为有外{}内的两个元素),和第二维的尺寸为5的初始化剂未尽元件是初始化为零。因此,您的代码相当于:

int a[][5] = {{1,0,0,0,0},{1,2,0,0,0}}; 
1

这是无效的。它甚至不会编译:

test.cc:1:9: error: declaration of ‘a’ as multidimensional array must have bounds for all dimensions except the first 
0

当您使用与阵列的花括号初始化记号,必须指定所有尺寸的阵列是要去所有部件,所以这段代码只给你一个编译时错误。

如果你想拥有一个大小不同的容器数组,可以考虑使用一组向量,或者甚至是一个向量向量。要使用它们,只需执行#include <vector>即可完成。