Buscar

Container Deque Cpp

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 13 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 13 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 13 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Container <deque> – C++
Aleffer Rocha, UTFPR-PG.
aleffer@alunos.utfpr.edu.br
Novembro de 2014, Ponta Grossa – PR.
Roteiro de apresentação
 Introdução ao deque;
 Criando um deque;
 Inserção no início do deque;
 Inserção no fim do deque;
 Remoção no início do deque;
 Remoção no fim do deque;
 Métodos Construtores <deque>;
 Métodos Acessores <deque>;
 Métodos Modificadores <deque>;
 Exercício;
 Referências.
Introdução ao deque
 A classe-template deque representa uma estrutura de dados do tipo
double-ended queue (fila com duas extremidades);
 A exemplo do vetor, o deque também suporta o operador “[ ]”;
 As operações de inserção e eliminação podem ser feitas em ambos os
lados extremos e os seus elementos não são armazenados em posições
contíguas da memória.
Criando um deque
 Existem 4 formas de se criar um deque, ou seja, são 4 construtores:
#include <deque>
#include <iostream>
using namespace std;
int main (void){
deque <int> p_deque; /* Deque vazio. */
deque <int> s_deque(8); /* Deque com N elementos (neste caso, 8). */
deque <int> t_deque(8, -1); /* Deque com N elementos inicializado com valor X (neste
caso 8 elementos estes inicializados com -1) */
deque <int> q_deque(ini, fim); /* Cria o deque vazio e copia os valores indexados do
iterator passado em início ao iterator passado como fim. */
return 0;
}
Inserção no início do deque
 Vamos utilizar o deque “p_deque” criado no slide anterior para fazermos a inserção no
início do deque:
#include <deque>
#include <iostream>
using namespace std;
int main (void){
...
p_deque.push_front(7); /* Inserindo o valor 7 inicio do deque. */
p_deque.push_front(9); /* Inserindo o valor 9 no inicio do deque. */
p_deque.push_front(2); /* Inserindo o valor 2 do deque. */
return 0;
}
Inserção no fim do deque
 Vamos utilizar o deque “p_deque” para fazermos a inserção no fim do deque:
#include <deque>
#include <iostream>
using namespace std;
int main (void){
...
p_deque.push_back(3); /* Inserindo o valor 3 no fim do deque. */
p_deque.push_back(5); /* Inserindo o valor 5 no fim do deque. */
p_deque.push_back(1); /* Inserindo o valor 1 no fim do deque. */
return 0;
}
Remoção no início do deque
 Vamos utilizar o deque “p_deque” para fazermos a remoção no início do deque:
#include <deque>
#include <iostream>
using namespace std;
int main (void){
...
p_deque.pop_front(); /* Removendo o primeiro elemento do deque. */
return 0;
}
Remoção no fim do deque
 Vamos utilizar o deque “p_deque” para fazermos a remoção no fim do deque:
#include <deque>
#include <iostream>
using namespace std;
int main (void){
...
p_deque.pop_back(); /* Removendo o último elemento do deque. */
return 0;
}
Métodos Construtores <deque>
MÉTODO DESCRIÇÃO TEMPO DE EXECUÇÃO
deque <T> d; Cria um deque vazio. O(1)
deque <T> d(n); Cria um deque com “n” elementos. O(n)
deque <T> d(n, value); Cria um deque com “n” elementos,
inicializados com um valor dado no
parâmetro “value”.
O(n)
deque <T> d(begin, end); Cria um deque e copia os valores dados
através dos iterators passados pelos
parâmetros “begin” e “end”;
O(n)
Métodos Acessores <deque>
MÉTODO DESCRIÇÃO TEMPO DE EXECUÇÃO
d[i] Retorna ou seta o i-ésimo elemento com
verificação dos limitantes.
O(1)
d.at(i) Retorna o elemento i do deque verificando se i
está dentro dos limites do deque.
O(1)
d.size() Retorna um inteiro correspondente ao tamanho do
deque.
O(1)
d.empty() Retorna 1 se o deque estiver vazio ou 0 caso o
deque não esteja vazio.
O(1)
d.begin() Retorna o iterator indexado no início do deque. O(1)
d.end() Retorna o iterator indexado no fim do deque. O(1)
d.front() Retorna o primeiro elemento do deque. O(1)
d.back() Retorna o último elemento do deque. O(1)
Métodos Modificadores <deque>
MÉTODO DESCRIÇÃO TEMPO DE EXECUÇÃO
d.push_front(value) Adiciona um valor no início do deque. O(1) (amortizado)
d.push_back(value) Adiciona um valor no fim do deque. O(1) (amortizado)
d.assign(begin, end) Limpa o container e copia os elementos do
iterator passado em begin até o iterator
passado em end.
O(n)
d.insert(iterator, value) Adiciona um valor na posição do iterator
passado.
O(n)
d.pop_front() Remove o primeiro elemento do deque. O(1)
d.pop_back() Remove o último elemento do deque. O(1)
d.erase(iterator) Remove o elemento onde está na posição do
iterator passado.
O(n)
d.erase(begin, end) Remove os elementos do iterator passado em
begin até o iterator passado em end.
O(n)
Exercício
 Faça um programa usando container deque qual leia uma quantidade N
de números (sendo N diferente de 0) e apresente na tela: Os números
digitados, a soma de todos os números digitados, a quantidade de
números digitados e a média aritmética da soma de todos os números,
conforme o exemplo abaixo:
ENTRADA SAÍDA
5
5
2
12
0
5 5 2 12 
24
4
6
Referências
 STANDART C++ CONTAINERS, acesso em novembro de 2014,
disponível em: http://cs.northwestern.edu/~riesbeck/programming/c++/stl-
summary.html#list
 Guia da consulta rápida C++ STL – Joel Saade, acesso em novembro de
2014.

Continue navegando