Структура данных «многие ко многим» в Python

У меня есть набор данных книг и авторов, с отношением многих ко многим.

Есть около 10 ^ 6 книг и 10 ^ 5 авторов, с в среднем по 10 авторов на книгу.

Мне нужно выполнить ряд операций с набором данных, например подсчет количества книг каждого автора или удаление всех книг определенного автора из набора. 1 из 'initWithFrame:'

Это вызывает его:

operationLabel = [[NSTextField alloc] initWithFrame:CGRectMake(0, self.frame.size.height / 2 - (40 * 3), self.frame.size.width, 100)];

Определение:

- (id)initWithFrame:(NSRect)frameRect;

Итак, первый аргумент - NSRect, давайте проверим его:

typedef CGRect NSRect;

Как это может вызвать ошибку? Одни и те же типы называются по-разному!

7
задан Kristina Brooks 21 August 2010 в 17:38
поделиться

3 ответа

NSRect является тем же типом, что и CGRect при сборке для iOS, для 64-битной архитектуры Mac или для 32-битной архитектуры Mac, если макрос NS_BUILD_32_LIKE_64 определен как 1 в командной строке или в префиксном заголовке.

Или, цитируя NSGeometry.h:

#if __LP64__ || TARGET_OS_EMBEDDED || TARGET_OS_IPHONE || TARGET_OS_WIN32 || NS_BUILD_32_LIKE_64
9
ответ дан 6 December 2019 в 07:49
поделиться

Откуда вы взяли определение typedef для NSRect ? Согласно документам NSRect определяется следующим образом:

typedef struct _NSRect {
      NSPoint origin;
      NSSize size;
} NSRect;

Другими словами, это структура, которая выглядит так же, как CGRect (но не простой typedef ) . Уже что-то написано о преобразованиях между CGRect и NSRect .

3
ответ дан 6 December 2019 в 07:49
поделиться

В дополнение к ответу zoul я подумал, что упомяну две вспомогательные функции (макросы?) от Apple (начиная с 10.5):

NSRect NSRectFromCGRect(CGRect cgrect)
CGRect NSRectToCGRect(NSRect nsrect)
11
ответ дан 6 December 2019 в 07:49
поделиться