A classe Deque
(PECL ds >= 1.0.0)
Introdução
Um Deque (pronunciado "deck") é uma sequência de valores em um buffer contíguo que cresce e diminui automaticamente. O nome é uma abreviação comum de "double-ended queue" e é usado internamente por Ds\Queue.
Dois ponteiros são usados para acompanhar um head e um tail. Os ponteiros podem "envolver" a extremidade do buffer, o que evita a necessidade de mover outros valores para criar espaço. Isso torna shift e unshift muito rápidos — algo que um Ds\Vector não pode competir.
Acesso a um valor pelo índice requer uma tradução entre o índice e sua
posição correspondente no buffer: ((head + position) % capacity)
.
Pontos Fortes
- Suporta a sintaxe de array (colchetes).
- Utiliza menos memória geral do que um array para o mesmo número de valores.
- Libera automaticamente a memória alocada quando seu tamanho diminui o suficiente.
- get(), set(), push(), pop(), shift() e unshift() são todos O(1).
Pontos Fracos
- A capacidade deve ser uma potência de 2.
- insert() e remove() são O(n).
Resumo da classe
/* Constantes */
/* Métodos */
}Constantes pré-definidas
Table of Contents
- Ds\Deque::allocate — Alloca memória suficiente para uma capacidade necessária
- Ds\Deque::apply — Atualiza todos os valores aplicando uma função de retorno de chamada a cada valor
- Ds\Deque::capacity — Retorna a capacidade atual
- Ds\Deque::clear — Remove todos os valores do deque
- Ds\Deque::__construct — Cria uma nova instância
- Ds\Deque::contains — Determina se a deque contém os valores fornecidos
- Ds\Deque::copy — Retorna uma cópia rasa da deque
- Ds\Deque::count — Retorna o número de valores na coleção
- Ds\Deque::filter — Cria um novo deque usando um callable para determinar quais valores incluir
- Ds\Deque::find — Tenta encontrar o índice de um valor
- Ds\Deque::first — Retorna o primeiro valor na deque
- Ds\Deque::get — Retorna o valor em um índice específico
- Ds\Deque::insert — Insere valores em um índice específico
- Ds\Deque::isEmpty — Retorna se o deque está vazio
- Ds\Deque::join — Une todos os valores como uma string
- Ds\Deque::jsonSerialize — Retorna uma representação que pode ser convertida para JSON
- Ds\Deque::last — Retorna o último valor
- Ds\Deque::map — Retorna o resultado de aplicar uma função de retorno de chamada a cada valor
- Ds\Deque::merge — Retorna o resultado de adicionar todos os valores dados à deque
- Ds\Deque::pop — Remove e retorna o último valor
- Ds\Deque::push — Adiciona valores ao final do deque
- Ds\Deque::reduce — Reduz o deque a um único valor usando uma função de retorno de chamada
- Ds\Deque::remove — Remove e retorna um valor pelo índice
- Ds\Deque::reverse — Inverte a deque no local
- Ds\Deque::reversed — Retorna uma cópia invertida
- Ds\Deque::rotate — Rotaciona a deque por um número dado de rotações
- Ds\Deque::set — Atualiza um valor em um índice específico
- Ds\Deque::shift — Remove e retorna o primeiro valor
- Ds\Deque::slice — Retorna uma sub-deque de um determinado intervalo
- Ds\Deque::sort — Ordena a deque no local
- Ds\Deque::sorted — Retorna uma cópia ordenada
- Ds\Deque::sum — Retorna a soma de todos os valores na deque
- Ds\Deque::toArray — Converte a deque para um array.
- Ds\Deque::unshift — Adiciona valores no início da deque