Как объявить и использовать 3-х мерный массив в ObjectiveC? - PullRequest
1 голос
/ 15 января 2011

Интересно, как решить следующую проблему: я хочу получить доступ к одному значению на основе пары значений, например, для значений 0 и 1 я хочу получить 3, для 4 и 5 я хочу получить 2 и т. д. Я думал о том, чтобы объявить трехмерный массив. Есть ли лучший способ добиться этого? Если нет, как я могу объявить 3D-массив в ObjectiveC?

Спасибо!

Ответы [ 2 ]

2 голосов
/ 15 января 2011

Если вы хотите, чтобы результаты основывались на парах значений (а не на тройках), тогда вам нужен 2D-массив.

Обычно 2D-массивы - это просто массивы.Если вы хотите использовать объект NSArray в Obj-C, то просто сделайте что-то вроде этого:

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 таким образом;Google "2D C ​​массивы" для тонны учебников, если вы предпочитаете это.

1 голос
/ 16 января 2011

Если вы собираетесь иметь значение для большинства или каждой возможной пары и сохраняете только целочисленные значения (как это видно из вашего примера), реальный массив C вполне может удовлетворить ваши потребности наилучшим образом, потому что вы можете быстро проиндексировать в 3D массив, чтобы получить то, что вы ищете.

Если это редкий набор данных, я могу увидеть что-то вроде того, что вы делаете лучше, если вы объедините свои два ключевых значения во что-то вроде "1-Firstval; 2-SecondVal" и удержите нужные числа для в NSDictionary. Тогда вы все равно получите быстрый поиск без использования большого количества памяти.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...