Многомерный массив в объективе c - PullRequest
1 голос
/ 29 августа 2011

Дружный ..

Я хочу создать один 8 * 8-мерный массив в объекте c ..

(
[0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0],
)

вот так .. А также использовать как один из объектов может перемещаться в нем .. Хотелось бы переехать

MOVE_ARRAY = array([0, 0], [0, 2])

А также проверьте любую позицию массива, например, 5 * 6 или 4 * 3, любую. Итак, кто-нибудь может мне помочь с тем, как инициализировать и как использовать в коде? Спасибо.

Ответы [ 3 ]

7 голосов
/ 29 августа 2011

В Objective-C:

array = [[NSMutableArray alloc] init];

for (int i = 0; i < 8; i++) {
    NSMutableArray *subArray = [[NSMutableArray alloc] init];
    for (int j = 0; j < 8; j++) {
        [subArray addObject:[NSNumber numberWithInt:0]]; 
    }
    [array addObject:subArray];
    [subArray release];
}

(array - это переменная экземпляра, которая должна быть добавлена ​​в ваш заголовочный файл и выпущена вашим dealloc методом)

Чтобы получить значение в определенной позиции, вы можете написать такой метод:

- (int)valueAtRow:(int)row andColumn:(int)col {
    NSMutableArray *subArray = [array objectAtIndex:row];
    return [[subArray objectAtIndex:col] intValue];
}

=== ОБНОВЛЕНИЕ ===

Чтобы удалить объект, вы можете сделать это:

- (void)removeObjectAtRow:(int)row andColumn:(int)col {
    NSMutableArray *subArray = [array objectAtIndex:row];
    [subArray removeObjectAtIndex:col];
}

Вы должны быть осторожны, потому что удаление объектов изменит структуру массива (например, строка, в которой вы удалили объект, будет иметь только 7 элементов после удаления. Поэтому вы можете подумать о том, чтобы оставить структуру нетронутой и установите значения, которые вы хотите удалить, на значение, которое вы обычно не используете:

- (void)removeObjectAtRow:(int)row andColumn:(int)col {
    NSMutableArray *subArray = [array objectAtIndex:row];
    [subArray replaceObjectAtIndex:col withObject:[NSNumber numberWithInt:-999]];
}
2 голосов
/ 08 декабря 2013

Чтобы создать постоянный двумерный массив, содержащий целые числа, просто сделайте что-то вроде:

NSArray *array;
array = @[@[@1, @7, @4, @11],@[@2, @6, @9]];

Это создает массив

1 7 4 11
2 6 9
2 голосов
/ 29 августа 2011

В С:

int **array = (int**)calloc(8, sizeof(int*));
for (int i=0; i<8; i++) array[i] = (int*)calloc(8, sizeof(int));
// use your array
// cleaning:
for (int i=0; i<8; i++) free(array[i]);
free(array);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...