我想知道如何解决以下问题:我希望根据一对值访问一个值,例如对于值0和1我想得到3,对于4和5我想得到2,等等。 我正在考虑声明三维数组。有没有更好的方法来实现这一目标?如果没有,我如何在ObjectiveC中声明3d数组?
谢谢!
答案 0 :(得分:2)
如果您想要基于值对(而不是三元组)的结果,那么您需要一个2D数组。
通常,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 :(得分:1)
如果您要为大多数或每个可能的对设置一个值并且只存储整数值(如您的示例所示),那么真正的C数组可能会最好地满足您的需求,因为您可以快速索引到3D数组,以获得您正在寻找的东西。
如果它是一组稀疏的数据,如果你将两个键值连接成“1-Firstval; 2-SecondVal”之类的东西并且保持你正在寻找的数字,我可以看到类似你正在做的更好的事情在NSDictionary中。然后你仍然可以在不使用大量内存的情况下快速查找。