Класс Deque
(No version information available, might only be in Git)
Введение
Двухсторонняя очередь - это последовательность значений в непрерывном буфере, который растет и уменьшаются автоматически. Deque (произносится как "deck") является аббривиатурой от "double-ended queue" и используется внутри Ds\Queue.
Два указателя используются для отслеживания начала и конца. Указатели могут "обернуть" конец очереди, что позволяет избежать перемещения значений для освобождения места. Это делает операции shift и unshift такими быстрыми, что Ds\Vector не может с этим соперничать.
Доступ к элементу по индексу требует пересчета в зависимости от его индекса в буфере:
((head + position) % capacity)
.
Сильные стороны
- Поддерживает синтаксис массива (квадратные скобки).
- Требует меньше памяти, чем массив (array) с тем же количеством значений.
- Автоматически освобождает память, когда количество элементов уменьшается.
- get(), set(), push(), pop(), shift() и unshift() имеют сложность O(1).
Слабые стороны
- Вместимость ограничена степенями двойки.
- insert() и remove() имеют сложность O(n).
Обзор классов
Предопределенные константы
Ds\Deque::MIN_CAPACITY
Содержание
- Ds\Deque::allocate — Выделяет память под указанную вместимость
- Ds\Deque::apply — Обновляет все значения, применяя callback-функцию к каждому значению
- Ds\Deque::capacity — Возвращает текущую вместимость
- Ds\Deque::clear — Удаляет все значения из двухсторонней очереди
- Ds\Deque::__construct — Создает новый экземпляр
- Ds\Deque::contains — Проверяет, содержится ли в двухсторонней очереди заданные значения
- Ds\Deque::copy — Возвращает поверхностную копию коллекции
- Ds\Deque::count — Возвращает количество элементов двухсторонней очереди
- Ds\Deque::filter — Создает новую двухстороннюю очередь из элементов, выбранных с помощью заданной callback-функции
- Ds\Deque::find — Поиск индекса по значению
- Ds\Deque::first — Возвращает первый элемент двухсторонней очереди
- Ds\Deque::get — Возвращает значение по индексу
- Ds\Deque::insert — Вставляет значения по указанному индексу
- Ds\Deque::isEmpty — Проверяет, пуста ли двухсторонняя очередь
- Ds\Deque::join — Склеивает все значения в строку
- Ds\Deque::jsonSerialize — Возвращает коллекцию в JSON-представлении
- Ds\Deque::last — Возвращает последнее значение двухсторонней очереди
- Ds\Deque::map — Возвращает результат применения callback-функции ко всем значениям двухсторонней очереди
- Ds\Deque::merge — Возвращает результат добавления всех заданных значений в двухстороннюю очередь
- Ds\Deque::pop — Удаляет и возвращает последнее значение
- Ds\Deque::push — Добавляет значения в конец двухсторонней очереди
- Ds\Deque::reduce — Уменьшает коллекцию до одного значения, используя callback-функцию
- Ds\Deque::remove — Удаляет и возвращает значение по индексу
- Ds\Deque::reverse — Переворачивает текущую двухстороннюю очередь
- Ds\Deque::reversed — Возвращает перевернутую копию двухсторонней очереди
- Ds\Deque::rotate — Перематывает двухстороннюю очередь на заданное число значений
- Ds\Deque::set — Заменяет значение по указанному индексу
- Ds\Deque::shift — Удаляет и возвращает первое значение
- Ds\Deque::slice — Возвращает подочередь из заданного диапазона
- Ds\Deque::sort — Сортирует двухстороннюю очередь
- Ds\Deque::sorted — Возвращает отсортированную по значению копию двухсторонней очереди
- Ds\Deque::sum — Возвращает сумму всех значений двухсторонней очереди
- Ds\Deque::toArray — Преобразует двухстороннюю очередь в массив (array)
- Ds\Deque::unshift — Добавляет значения в начало двухсторонней очереди