6 #ifndef PERSISTENCE_DEQUE3_HPP_
7 #define PERSISTENCE_DEQUE3_HPP_
11 namespace persistence {
21 inline int size()
const;
22 inline bool empty()
const;
25 void push_back(
const T &x);
26 void push_front(
const T &x);
31 const T& front()
const;
32 const T& back()
const;
35 const T& operator [](
int i)
const;
56 using any = deque2::any;
98 inline void add_ref();
99 template<
class T>
inline void rem_ref();
100 inline void safe_rem_ref();
157 const T&
Front()
const;
163 const T&
Back()
const;
170 const T&
K_th(
int k)
const;
241 int Digit(
const Node *a,
bool last);
269 #include "Deque3.tpp"
271 #endif // PERSISTENCE_DEQUE3_HPP_
const T & Back() const
Acesso ao último elemento.
Deque persistente de Kaplan e Tarjan.
Definition: Deque3.hpp:136
SubDeque< any * > prefix
Prefixo da deque.
Definition: Deque3.hpp:75
Implementação de uma deque persistente de acordo com o capítulo 4.
Deque< T > PushBack(const T &x) const
Inserção no final.
Deque< T > PopFront() const
Remoção do início.
SubDeque< any * > suffix
Sufixo da deque.
Definition: Deque3.hpp:83
Nó da deque de Kaplan e Tarjan.
Definition: Deque3.hpp:70
Deque< T > PopBack() const
Remoção do final.
int size
Tamanho da deque.
Definition: Deque3.hpp:94
const T & K_th(int k) const
Acesso ao k-ésimo elemento.
Deque não persistente de até 5 elementos.
Definition: Deque3.hpp:19
const T & Front() const
Acesso ao primeiro elemento.
Node * node
Nó principal.
Definition: Deque3.hpp:142
Deque< T > PushFront(const T &x) const
Inserção no início.
Node * child
Sub-deque central.
Definition: Deque3.hpp:79
Node * next
Próximo nó na pilha de nós.
Definition: Deque3.hpp:88