Referência da Template de Classe persistence::deque1::Deque< T >

Descrição Detalhada

template<class T>
class persistence::deque1::Deque< T >

Deque persistente utilizando LA e LCA.

Uma deque é uma lista que permite adições e remoções em suas duas pontas. Implementamos aqui uma deque persistente que também permite acesso ao k-ésimo elemento. Esta utiliza a mesma técnica que a pilha e a fila, tanto que a estrutura Node é compartilhada entre a pilha e esta estrutura.

A deque armazena elementos do tipo T, e só assume que esse tipo tem um construtor de cópia. Uma diferença do código discutido no Capítulo 3 da tese é que aqui as funções não recebem a deque, mas são métodos desta.

Um objeto Deque consiste de apenas dois ponteiros para nós das extremidades da deque. O objeto é imutável, e como a implementação é funcional, podemos usá-la de forma persistente, como no seguinte exemplo:

using namespace persistence::deque1;
Deque<int> d1; // ()
Deque<int> d2 = d1.PushFront(1); // (1)
Deque<int> d3 = d2.PushFront(2); // (2, 1)
Deque<int> d4 = d3.PushBack(0); // (2, 1, 0)
Deque<int> d5 = d2.PopBack(); // (2)
d4.Front(); // retorna 2
d4.Back(); // retorna 0
d4.K_th(1); // retorna 1

Métodos Públicos

 Deque ()
 Construtor vazio. Mais...
 
Dequeoperator= (const Deque &o)
 
 Deque (const Deque &o)
 

Campos de Dados

Node< T > * first
 Primeiro nó. Mais...
 
Node< T > * last
 Ultimo nó. Mais...
 

Operações de Acesso

const T & Front () const
 Acesso ao primeiro elemento. Mais...
 
const T & Back () const
 Acesso ao último elemento. Mais...
 
const T & K_th (int k) const
 Acesso ao k-ésimo elemento. Mais...
 

Operações de Modificação

Estas funções retornam uma cópia modificada da deque, e não alteram o objeto na qual são chamadas.

Deque< T > Swap () const
 Inverte a deque. Mais...
 
Deque< T > PushFront (const T &x) const
 Inserção no início. Mais...
 
Deque< T > PushBack (const T &x) const
 Inserção no final. Mais...
 
Deque< T > PopFront () const
 Remoção do início. Mais...
 
Deque< T > PopBack () const
 Remoção do final. Mais...
 

Construtores & Destrutores

template<class T>
persistence::deque1::Deque< T >::Deque ( )

Construtor vazio.

Constrói uma deque sem nenhum elemento.

Métodos

template<class T>
const T& persistence::deque1::Deque< T >::Back ( ) const

Acesso ao último elemento.

Retorna
O valor do último elemento da deque.
Pré-Condição
A deque não deve estar vazia.
template<class T>
const T& persistence::deque1::Deque< T >::Front ( ) const

Acesso ao primeiro elemento.

Retorna
O valor do primeiro elemento da deque.
Pré-Condição
A deque não deve estar vazia.
template<class T>
const T& persistence::deque1::Deque< T >::K_th ( int  k) const

Acesso ao k-ésimo elemento.

Parâmetros
kO índice do elemento desejado. 0 é o primeiro elemento.
Retorna
O valor do k-ésimo elemento da deque.
Pré-Condição
0 ≤ k < n, onde n é o tamanho da deque.
template<class T>
Deque<T> persistence::deque1::Deque< T >::PopBack ( ) const

Remoção do final.

Retorna
Uma cópia da deque, mas sem seu último elemento.
Pré-Condição
A deque não deve estar vazia.
template<class T>
Deque<T> persistence::deque1::Deque< T >::PopFront ( ) const

Remoção do início.

Retorna
Uma cópia da deque, mas sem seu primeiro elemento.
Pré-Condição
A deque não deve estar vazia.
template<class T>
Deque<T> persistence::deque1::Deque< T >::PushBack ( const T &  x) const

Inserção no final.

Parâmetros
xValor a ser adicionado no final da deque.
Retorna
Uma cópia da deque, mas com x como último elemento.
template<class T>
Deque<T> persistence::deque1::Deque< T >::PushFront ( const T &  x) const

Inserção no início.

Parâmetros
xValor a ser adicionado no início da deque.
Retorna
Uma cópia da deque, mas com x como primeiro elemento.
template<class T>
Deque<T> persistence::deque1::Deque< T >::Swap ( ) const

Inverte a deque.

Retorna
Uma cópia da deque, mas com a ordem dos elementos invertida.
Anotações
Apesar de ser uma função interessante por si só, esta função é principalmente usada para reduzir a quantidade de código para operações de Front ou Back, já que estas são simétricas.

Campos

template<class T>
Node<T>* persistence::deque1::Deque< T >::first

Primeiro nó.

Este é o nó que indica o primeiro elemento da deque. Os elementos da deque são os nós no caminho entre first e last.

template<class T>
Node<T>* persistence::deque1::Deque< T >::last

Ultimo nó.

Veja também
first para mais informação.

A documentação para esta classe foi gerada a partir do seguinte arquivo:
  • /home/travis/build/yancouto/mestrado/source/persistence/Deque1.hpp