2011-01-15 59 views
1

我不知道如何解决以下问题:我想基于一对值访问一个值,例如,对于值0和1我想得到3,对于4和5我想得到2等。 我正在考虑宣布3维数组。有没有更好的方法来实现这一目标?如果不是,我该如何在ObjectiveC中声明3d数组?如何在ObjectiveC中声明和使用3维数组?

谢谢!

回答

2

如果你想要基于值对(而不是三元组)的结果,那么你想要一个二维数组。通常,2D数组只是数组的数组。如果你想使用的OBJ-C的NSArray的对象,那么你只是做这样的事情:

NSArray* yCoord1 = [NSArray arrayWithObjects:@"oneValue", @"secondValue", nil]; 
NSArray* yCoord2 = [NSArray arrayWithObject:@"thirdValue"]; 

NSArray* array = [NSArray arrayWithObjects:yCoord1,yCoord2,nil]; 

然后,可以访问阵列:

NSUInteger xCoord = 0; 
NSUInteger yCoord = 1; 

[[array objectAtIndex:xCoord] objectAtIndex:yCoord]; //Result: @"secondValue" 

它也可以使用普通的C数组通过这种方式;谷歌“2D C数组”为大量的教程,如果你愿意的话。

1

如果你将不得不对大多数或每对可能的值,并且只存储整数值(因为它从你的例子似乎),一个真正的C阵列可以很好的满足您的需求最好的,因为你可以快速索引一个三维数组来获得你正在寻找的东西。

如果它是一个稀疏的数据集,我可以看到像你在做什么样的工作,如果你将两个关键值连接成“1-Firstval; 2-SecondVal”之类的东西,并保存你所拥有的数字在NSDictionary中寻找。然后,您仍然可以快速查找而不占用大量内存。

+0

谢谢!你的回答是正确的,非常好,但是andyvn22的回答更适合我的需求。 – Jakub