Выбор ответа Senior Коллекции и строки обновлено

ContiguousArray и мост с NSArray

Вопрос

Когда ContiguousArray<T> может быть быстрее, чем Array<T>?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Для элементов-классов: Array может быть мостом к NSArray. На платформах Apple Array с элементами-классами может быть обёрткой над NSArray, пришедшим из Objective-C, и тогда каждая операция проверяет представление.

Варианты ответа

  1. Всегда: Array хранит элементы связным списком, а ContiguousArray подряд
  2. Только для Int и Double: для них включается векторизация операций
  3. Для элементов-классов: Array может быть мостом к NSArrayправильный ответ
  4. Никогда: ContiguousArray просто псевдоним Array для совместимости

Разбор

На платформах Apple Array с элементами-классами может быть обёрткой над NSArray, пришедшим из Objective-C, и тогда каждая операция проверяет представление. ContiguousArray такой возможности лишён и всегда хранит элементы непрерывно в Swift-буфере. Для структур вроде Int разницы нет. Связным списком Array не бывает, и псевдонимом ContiguousArray не является.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.