C++ 在声明时将静态2D数组初始化为零

C++ 在声明时将静态2D数组初始化为零,c++,ios,objective-c,c,C++,Ios,Objective C,C,我正在用最新的SDK开发一个iOS 5.0+应用程序 我必须声明一个私有2D数组的初始化,因为我要在C++函数上使用它: @implementation MyClass int myArray[NSFirstDim][NSSecondDim] = 0; <-- Error here ... - (id)init { ... } ... @end 如何将所有值初始化为零? 或者我可以使用2D动态数组…使用 int myArray[NSFirstDim][NSSecondDim] =

我正在用最新的SDK开发一个iOS 5.0+应用程序

<>我必须声明一个私有2D数组的初始化,因为我要在C++函数上使用它:

@implementation MyClass

int myArray[NSFirstDim][NSSecondDim] = 0; <-- Error here

...

- (id)init
{
...
}

...
@end
如何将所有值初始化为零?

或者我可以使用2D动态数组…

使用

int myArray[NSFirstDim][NSSecondDim] = {0};
这是C语言中的一个强大行为,在C语言中,从start添加值,rest(其他)初始化为0

在这个示例代码中

int arr[4][3]={1,2,3};

for (int i=0; i<4; i++) {
    for (int j=0; j<3; j++) {
        NSLog(@"%d",arr[i][j]);
    }
}
int-arr[4][3]={1,2,3};

对于(inti=0;i这个intmyarray[2][1]={{0},{0}

int myArray[NSFirstDim][NSSecondDim] = {0};
此语句将2D数组的所有元素初始化为零。

看一看,我发现它非常有用

这也可能起作用:
int myArray[NSFirstDim][NSSecondDim]={};

使用std::vector,或者更好的-std::map。为什么要使用基于C的数组?@art-divin:两者都有一个(可能很重要)运行时成本,那么为什么您应该优先使用两者之一而不是简单的固定大小数组呢?特别是,
map
完全不合适,除非可能是为了减少稀疏数组使用的存储空间。@MikeSeymour这种决策有很多优缺点,但对于更简单的方法,最好使用std或objc对象R实现。我们可以从这条线中看到“在C++中,我将在C++中使用它”,他只是想在C++方法中使用数组,但他没有指定他试图达到最大的性能(这也在问号下)。(至少与C++容器有关,Objy-C对这些注释我不知道)。更方便的是声明和初始化,就像访问一样方便,效率更高。如果你要声明,那么你应该支持这个说法,而不是仅仅说使用类是一种“简单的方法”。@MikeSeymour很抱歉,我忘了说明在编程风格和未来代码支持保险中,这是一种更好的方法。我想知道这种
int数组[2][1]
,两行各有一列的好处是什么。也就是说,只有2个值。只是初始化的另一种方式:)。这里是另一种方式
int数组[2][1][1][1] [1]…[1]
:p
int myArray[NSFirstDim][NSSecondDim] = {0};
int myArray[NSFirstDim][NSSecondDim] = {0};