Клас Deque
(PECL ds >= 1.0.0)
Вступ
Двостороння черга – це послідовність значень у безперервному буфері, який росте та зменшуються автоматично. 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).
Огляд класів
class Ds\Deque
implements
Ds\Sequence, ArrayAccess {
/* Константы */
const
int
MIN_CAPACITY = 8;
/* Методы */
public allocate(int $capacity): void
public apply(callable $callback): void
public capacity(): int
public clear(): void
public contains(mixed ...$values): bool
public copy(): Ds\Deque
public filter(callable $callback = ?): Ds\Deque
public find(mixed $value): mixed
public first(): mixed
public get(int $index): mixed
public insert(int $index, mixed ...$values): void
public isEmpty(): bool
public join(string $glue = ?): string
public last(): mixed
public map(callable $callback): Ds\Deque
public merge(mixed $values): Ds\Deque
public pop(): mixed
public push(mixed ...$values): void
public reduce(callable $callback, mixed $initial = ?): mixed
public remove(int $index): mixed
public reverse(): void
public reversed(): Ds\Deque
public rotate(int $rotations): void
public set(int $index, mixed $value): void
public shift(): mixed
public slice(int $index, int $length = ?): Ds\Deque
public sort(callable $comparator = ?): void
public sorted(callable $comparator = ?): Ds\Deque
public sum(): int|float
public toArray(): array
public unshift(mixed $values = ?): void
}
Обумовлені константи
Ds\Deque::MIN_CAPACITY
список змін
Версия | Опис |
---|---|
PECL ds 1.3.0 | Тепер клас реалізує ArrayAccess |
Зміст
- 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— Додає значення на початок двосторонньої черги