Deque в Swift, её преимущества и недостатки
Victor
Deque (произносится как "дек", не декью и не декуе) работает так же, как и Array: это упорядоченная, с произвольным доступом, изменяемая, заменяемая по диапазону коллекция с целочисленными индексами.
Основное преимущество Deque перед Array заключается в том, что она поддерживает эффективные вставки и удаления с обоих концов.
Это делает Deque отличным выбором в тех случаях, когда нам нужна очередь "первый вошел - первый вышел". Чтобы подчеркнуть это, Deque предоставляет удобные операции для вставки и удаления элементов с обоих концов:
var colors: Deque = ["red", "yellow", "blue"]
colors.prepend("green")
colors.append("orange")
// `colors` теперь будет ["green", "red", "yellow", "blue", "orange"]
colors.popFirst() // "green"
colors.popLast() // "orange"

Примечание: На графике среднее время обработки каждого элемента представлено в логарифмической шкале. Меньше - лучше. Бенчмарки выполнялись на iMac Pro 2017 года.
Конечно, мы также можем использовать любой из знакомых методов MutableCollection и RangeReplaceableCollection для доступа и изменения элементов коллекции.
Индексы работают точно так же, как и в массиве - первый элемент всегда имеет нулевой индекс:
colors[1] // "yellow"
colors[1] = "peach"
colors.insert(contentsOf: ["violet", "pink"], at: 1)
// `colors` теперь ["red", "violet", "pink", "peach", "blue"]
colors.remove(at: 2) // "pink"
// `colors` теперь ["red", "violet", "peach", "blue"]
colors.sort()
// `colors` теперь ["blue", "peach", "red", "violet"]

Чтобы поддерживать эффективную вставку спереди, deques должны отказаться от сохранения своих элементов в буфере. Это приводит к тому, что они работают немного медленнее массивов в случаях, когда не требуется вставка/удаление элементов спереди - поэтому не стоит слепо заменять все массивы на deques.
Ещё немного информации можно найти здесь.
А про разработку можно прочитать в моём авторском канале.
