Класс Deque

(Информация о версии неизвестна, возможно, только в SVN)

Введение

Двухсторонняя очередь - это последовательность значений в непрерывном буфере, который растет и обрезается автоматически. 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 implements Ds\Sequence {
/* Константы */
const int MIN_CAPACITY = 8 ;
/* Методы */
public void allocate ( int $capacity )
public void apply ( callable $callback )
public int capacity ( void )
public void clear ( void )
public bool contains ([ mixed $...values ] )
public Ds\Deque copy ( void )
public Ds\Deque filter ([ callable $callback ] )
public mixed find ( mixed $value )
public mixed first ( void )
public mixed get ( int $index )
public void insert ( int $index [, mixed $...values ] )
public bool isEmpty ( void )
public string join ([ string $glue ] )
public mixed last ( void )
public Ds\Deque map ( callable $callback )
public Ds\Deque merge ( mixed $values )
public mixed pop ( void )
public void push ([ mixed $...values ] )
public mixed reduce ( callable $callback [, mixed $initial ] )
public mixed remove ( int $index )
public void reverse ( void )
public Ds\Deque reversed ( void )
public void rotate ( int $rotations )
public void set ( int $index , mixed $value )
public mixed shift ( void )
public Ds\Deque slice ( int $index [, int $length ] )
public void sort ([ callable $comparator ] )
public Ds\Deque sorted ([ callable $comparator ] )
public number sum ( void )
public array toArray ( void )
public void unshift ([ mixed $values ] )
}

Предопределенные константы

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 — Добавляет значения в начало двунаправленной очереди
add a note add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top