SlideShare uma empresa Scribd logo
1 de 44
CURSO DE MARATONA DE PROGRAMAÇÃO
ICT-Unifesp
 Iremos utilizar a STL (biblioteca padrão do C++).
 Por que?
 STL possui várias estruturas implementadas.
 Estudos dizem que você irá escrever menos e poderá obter mais !!
 Lembre-se:
 A STL ajuda, mas não faz milagres!
 Estude os mais diversos algoritmos e técnicas de programação.
 Use a STL de forma adequada.
 Exemplo: uso vetor (vector) ou lista (list) ?
 Resolva (muitos=2)^10 problemas.
2
 O objetivo é maratona de programação.
 A maratona é democrática, você pode programar até em Java!
 Com a palavra ViniGodoy:
3
 Relax, não é preciso dominar a linguagem...
 Só precisamos saber um pouquinho...
 Você pode misturar C e C++.
 Ou pode fazer o código totalmente em C e salvar como .cpp :D
 Seu foco maior será nos algoritmos e técnicas para resolver os problemas.
 C++ e STL te ajudarão a não ter maiores dores de cabeça!
4
5
 No C fazíamos:
6
 No C++ utilizando STL:
 Não esquecer de incluir: #include <vector>
7
 Ok, escrevemos menos quando fizemos em C, mas você pode passar para o
construtor a quantidade de elementos, será inicializado tudo com 0 e aí você só
atribui os valores:
8
 O vector possui várias operações.
 Vimos a função push_back que insere elementos, mas existem outras...
 A função erase apaga elementos:
 A função clear que remove todos os elementos:
v.clear();
9
 Pergunta: remove o último elemento ?
10
 Pergunta: remove o último elemento ?
11
 Corrigindo...
 O begin() aponta para o primeiro elemento e o end() não aponta para o último
elemento, entendeu? Nem eu!
12
 Utilizando C/C++:
13
 String do C++ também é legal, você pode passar o conteúdo no construtor:
14
 Mas eu tenho uma string do C! Ok ...
15
 Mas eu tenho uma string do C, quero passar para C++ e quero imprimir a string
do C++ com o saudoso printf! Ok ......
16
 As funções mantêm um certo padrão.
 Lembra das funções size() e erase() ?
 Elas existem para string! O que é impresso na última linha?
17
 Copiando uma string (saudades da strcpy ??) :
18
 Desafio: o que imprimirá cada um dos códigos?
19
 #include <list>
20
 Acessando os elementos:
21
 Lembra da pilha que você teve que implementar em estrutura de dados?
 Sem sofrimento, basta você incluir: #include <stack>
22
 A remoção é feita com a função pop():
23
 Verificar se a pilha está vazia:
24
 Lembra da fila do banco? Inclua: #include <queue>
25
 Utilize a função back() para saber quem é o último da fila:
26
 Quer associar elementos por chave/valor? #include <map>
27
 Verificando se uma chave existe:
28
 Não temos a chave “blabla”, o que será impresso?
29
 Percorrendo o map...
 A impressão ocorre na ordem em que os elementos foram inseridos?
30
 Permite inserir elementos no início e no final:
 #include <queue> ou #include <deque>
31
 Percorrendo:
32
 E se fosse uma fila, funcionaria o código abaixo?
33
 E se fosse uma fila, funcionaria o código abaixo?
34
 O set não permite elementos repetidos. Basta incluir: #include <set>
 Os elementos são mantidos em ordem crescente.
35
 Mas eu preciso de um set com elementos repetidos em ordem crescente.
 Seus problemas acabaram: multiset
36
 Ouvi dizer que em C++ você programa com classe...
 Struct é quase igual a uma classe... O código abaixo compila?
37
 Agora sim código abaixo compila!
 Os membros por default de uma classe são privados, então colocamos o public:
38
 O código abaixo compila!
 Os membros por default de uma struct são públicos.
39
 Alguns algoritmos estão implementados para você utilizar.
 #include <algorithm>
 Ordenar os elementos em ordem crescente: sort()
40
 Imprimir todas as permutações: next_permutation()
41
 Busca binária: binary_search()
42
43
 Tem quase tudo aqui: http://www.cplusplus.com/reference
 Curso de C++ (~ 100 vídeo-aulas): https://goo.gl/BFbNOL
 Maratona de Programação com STL: http://goo.gl/eyhOzq
 Contato: mcastrosouza@live.com
44

Mais conteúdo relacionado

Mais procurados

Aula 1 introdução a algoritmos
Aula 1   introdução a algoritmosAula 1   introdução a algoritmos
Aula 1 introdução a algoritmosAdilio Tavares
 
Preconceito linguístico
Preconceito linguísticoPreconceito linguístico
Preconceito linguísticoJamille Rabelo
 
Introdução à literatura policial - parte 2 de 4
Introdução à literatura policial  - parte 2 de 4Introdução à literatura policial  - parte 2 de 4
Introdução à literatura policial - parte 2 de 4Edson Rossatto
 
Algoritmos e Programação: Estruturas de condição
Algoritmos e Programação: Estruturas de condiçãoAlgoritmos e Programação: Estruturas de condição
Algoritmos e Programação: Estruturas de condiçãoAlex Camargo
 
Interfaces Gráficas em Java Parte 1
Interfaces Gráficas em Java Parte 1Interfaces Gráficas em Java Parte 1
Interfaces Gráficas em Java Parte 1Elaine Cecília Gatto
 
Deu a louca em romeu e julieta comédia
Deu a louca em romeu e julieta comédiaDeu a louca em romeu e julieta comédia
Deu a louca em romeu e julieta comédiaAna Flavia Coelho
 
55557 9 medidas-de_separatrizes_-_quartis
55557 9 medidas-de_separatrizes_-_quartis55557 9 medidas-de_separatrizes_-_quartis
55557 9 medidas-de_separatrizes_-_quartisAlda Mbs
 
Sistemas Operacionais - Aula 05 (Concorrência)
Sistemas Operacionais - Aula 05 (Concorrência)Sistemas Operacionais - Aula 05 (Concorrência)
Sistemas Operacionais - Aula 05 (Concorrência)Leinylson Fontinele
 
Mutexes, Monitores e Semáforos
Mutexes, Monitores e SemáforosMutexes, Monitores e Semáforos
Mutexes, Monitores e SemáforosThiago Poiani
 
atividade com tipos de argumentos.docx
atividade com tipos de argumentos.docxatividade com tipos de argumentos.docx
atividade com tipos de argumentos.docxEli Gonçalves
 
Elementos da narrativa-conto-de-enigma-e-relato-pessoal-revisão
Elementos da narrativa-conto-de-enigma-e-relato-pessoal-revisãoElementos da narrativa-conto-de-enigma-e-relato-pessoal-revisão
Elementos da narrativa-conto-de-enigma-e-relato-pessoal-revisãoNastrilhas da lingua portuguesa
 
Escalonamento no Windows
Escalonamento no WindowsEscalonamento no Windows
Escalonamento no WindowsFee Kosta
 
Aula 03.2 - Algoritmos, Diagramas de Blocos e Fluxograma
Aula 03.2 - Algoritmos, Diagramas de Blocos e FluxogramaAula 03.2 - Algoritmos, Diagramas de Blocos e Fluxograma
Aula 03.2 - Algoritmos, Diagramas de Blocos e FluxogramaMessias Batista
 
Lista de exercicios 02 hardware
Lista de exercicios 02 hardwareLista de exercicios 02 hardware
Lista de exercicios 02 hardwareMauro Pereira
 
Linguagem C - Vetores, Matrizes e Funções
Linguagem C - Vetores, Matrizes e FunçõesLinguagem C - Vetores, Matrizes e Funções
Linguagem C - Vetores, Matrizes e FunçõesElaine Cecília Gatto
 

Mais procurados (20)

Aula 1 introdução a algoritmos
Aula 1   introdução a algoritmosAula 1   introdução a algoritmos
Aula 1 introdução a algoritmos
 
Preconceito linguístico
Preconceito linguísticoPreconceito linguístico
Preconceito linguístico
 
Introdução à literatura policial - parte 2 de 4
Introdução à literatura policial  - parte 2 de 4Introdução à literatura policial  - parte 2 de 4
Introdução à literatura policial - parte 2 de 4
 
Algoritmos e Programação: Estruturas de condição
Algoritmos e Programação: Estruturas de condiçãoAlgoritmos e Programação: Estruturas de condição
Algoritmos e Programação: Estruturas de condição
 
Interfaces Gráficas em Java Parte 1
Interfaces Gráficas em Java Parte 1Interfaces Gráficas em Java Parte 1
Interfaces Gráficas em Java Parte 1
 
Deu a louca em romeu e julieta comédia
Deu a louca em romeu e julieta comédiaDeu a louca em romeu e julieta comédia
Deu a louca em romeu e julieta comédia
 
SubProgramas
SubProgramasSubProgramas
SubProgramas
 
55557 9 medidas-de_separatrizes_-_quartis
55557 9 medidas-de_separatrizes_-_quartis55557 9 medidas-de_separatrizes_-_quartis
55557 9 medidas-de_separatrizes_-_quartis
 
Sistemas Operacionais - Aula 05 (Concorrência)
Sistemas Operacionais - Aula 05 (Concorrência)Sistemas Operacionais - Aula 05 (Concorrência)
Sistemas Operacionais - Aula 05 (Concorrência)
 
Mutexes, Monitores e Semáforos
Mutexes, Monitores e SemáforosMutexes, Monitores e Semáforos
Mutexes, Monitores e Semáforos
 
atividade com tipos de argumentos.docx
atividade com tipos de argumentos.docxatividade com tipos de argumentos.docx
atividade com tipos de argumentos.docx
 
Elementos da narrativa-conto-de-enigma-e-relato-pessoal-revisão
Elementos da narrativa-conto-de-enigma-e-relato-pessoal-revisãoElementos da narrativa-conto-de-enigma-e-relato-pessoal-revisão
Elementos da narrativa-conto-de-enigma-e-relato-pessoal-revisão
 
SO-04 Escalonamento de Processos
SO-04 Escalonamento de ProcessosSO-04 Escalonamento de Processos
SO-04 Escalonamento de Processos
 
Escalonamento no Windows
Escalonamento no WindowsEscalonamento no Windows
Escalonamento no Windows
 
Aula 4 - Estruturas condicionais
Aula 4 - Estruturas condicionaisAula 4 - Estruturas condicionais
Aula 4 - Estruturas condicionais
 
Distribuição binomial, poisson e hipergeométrica - Estatística I
Distribuição binomial, poisson e hipergeométrica - Estatística IDistribuição binomial, poisson e hipergeométrica - Estatística I
Distribuição binomial, poisson e hipergeométrica - Estatística I
 
Aula 03.2 - Algoritmos, Diagramas de Blocos e Fluxograma
Aula 03.2 - Algoritmos, Diagramas de Blocos e FluxogramaAula 03.2 - Algoritmos, Diagramas de Blocos e Fluxograma
Aula 03.2 - Algoritmos, Diagramas de Blocos e Fluxograma
 
Lista de exercicios 02 hardware
Lista de exercicios 02 hardwareLista de exercicios 02 hardware
Lista de exercicios 02 hardware
 
C++ Funções
 C++ Funções C++ Funções
C++ Funções
 
Linguagem C - Vetores, Matrizes e Funções
Linguagem C - Vetores, Matrizes e FunçõesLinguagem C - Vetores, Matrizes e Funções
Linguagem C - Vetores, Matrizes e Funções
 

Destaque

Maratona de Programação
Maratona de ProgramaçãoMaratona de Programação
Maratona de ProgramaçãoMarcos Castro
 
Algoritmo de Knuth-Morris-Pratt - KMP
Algoritmo de Knuth-Morris-Pratt - KMPAlgoritmo de Knuth-Morris-Pratt - KMP
Algoritmo de Knuth-Morris-Pratt - KMPMarcos Castro
 
Problema da Mochila 0-1 (Knapsack problem)
Problema da Mochila 0-1 (Knapsack problem)Problema da Mochila 0-1 (Knapsack problem)
Problema da Mochila 0-1 (Knapsack problem)Marcos Castro
 
Expressões Regulares com Python 3
Expressões Regulares com Python 3Expressões Regulares com Python 3
Expressões Regulares com Python 3Marcos Castro
 
Python - Dicionários
Python - DicionáriosPython - Dicionários
Python - DicionáriosMarcos Castro
 
Listas, tuplas, conjuntos e dicionários
Listas, tuplas, conjuntos e dicionáriosListas, tuplas, conjuntos e dicionários
Listas, tuplas, conjuntos e dicionáriosMarcos Castro
 
Backtracking - Gerar todos os subconjuntos
Backtracking - Gerar todos os subconjuntosBacktracking - Gerar todos os subconjuntos
Backtracking - Gerar todos os subconjuntosMarcos Castro
 
Problema das N rainhas (Backtracking)
Problema das N rainhas (Backtracking)Problema das N rainhas (Backtracking)
Problema das N rainhas (Backtracking)Marcos Castro
 
TRABALHO PARADIGMAS - C++
TRABALHO PARADIGMAS - C++TRABALHO PARADIGMAS - C++
TRABALHO PARADIGMAS - C++Ellen Diana
 
Redes Neurais Artificiais
Redes Neurais ArtificiaisRedes Neurais Artificiais
Redes Neurais ArtificiaisMarcos Castro
 
Caminhos Mínimos - Algoritmo de Dijkstra
Caminhos Mínimos - Algoritmo de DijkstraCaminhos Mínimos - Algoritmo de Dijkstra
Caminhos Mínimos - Algoritmo de DijkstraMarcos Castro
 
Introdução à Programação C++ com Qt 4
Introdução à Programação C++ com Qt 4Introdução à Programação C++ com Qt 4
Introdução à Programação C++ com Qt 4Antonio Menezes
 
Livro Linguagem C - Completo
Livro Linguagem C - CompletoLivro Linguagem C - Completo
Livro Linguagem C - CompletoMarcos Quinho
 
Fundamentos da programação de computadores 2ª edição
Fundamentos da programação de computadores   2ª ediçãoFundamentos da programação de computadores   2ª edição
Fundamentos da programação de computadores 2ª ediçãoLeandro Rocha de Oliveira
 
Introdução pascal
Introdução pascalIntrodução pascal
Introdução pascalIlton Prandi
 
Tópicos - Computacao Paralela Programação 3 (Visão geral)
Tópicos - Computacao Paralela Programação 3 (Visão geral)Tópicos - Computacao Paralela Programação 3 (Visão geral)
Tópicos - Computacao Paralela Programação 3 (Visão geral)Luiz Arthur
 

Destaque (20)

Maratona de Programação
Maratona de ProgramaçãoMaratona de Programação
Maratona de Programação
 
Algoritmo de Knuth-Morris-Pratt - KMP
Algoritmo de Knuth-Morris-Pratt - KMPAlgoritmo de Knuth-Morris-Pratt - KMP
Algoritmo de Knuth-Morris-Pratt - KMP
 
Problema da Mochila 0-1 (Knapsack problem)
Problema da Mochila 0-1 (Knapsack problem)Problema da Mochila 0-1 (Knapsack problem)
Problema da Mochila 0-1 (Knapsack problem)
 
Expressões Regulares com Python 3
Expressões Regulares com Python 3Expressões Regulares com Python 3
Expressões Regulares com Python 3
 
Python - Dicionários
Python - DicionáriosPython - Dicionários
Python - Dicionários
 
Listas, tuplas, conjuntos e dicionários
Listas, tuplas, conjuntos e dicionáriosListas, tuplas, conjuntos e dicionários
Listas, tuplas, conjuntos e dicionários
 
599026
599026599026
599026
 
Backtracking - Gerar todos os subconjuntos
Backtracking - Gerar todos os subconjuntosBacktracking - Gerar todos os subconjuntos
Backtracking - Gerar todos os subconjuntos
 
Aula1 c++ builder
Aula1   c++ builderAula1   c++ builder
Aula1 c++ builder
 
Problema das N rainhas (Backtracking)
Problema das N rainhas (Backtracking)Problema das N rainhas (Backtracking)
Problema das N rainhas (Backtracking)
 
TRABALHO PARADIGMAS - C++
TRABALHO PARADIGMAS - C++TRABALHO PARADIGMAS - C++
TRABALHO PARADIGMAS - C++
 
Redes Neurais Artificiais
Redes Neurais ArtificiaisRedes Neurais Artificiais
Redes Neurais Artificiais
 
Caminhos Mínimos - Algoritmo de Dijkstra
Caminhos Mínimos - Algoritmo de DijkstraCaminhos Mínimos - Algoritmo de Dijkstra
Caminhos Mínimos - Algoritmo de Dijkstra
 
Introdução à Programação C++ com Qt 4
Introdução à Programação C++ com Qt 4Introdução à Programação C++ com Qt 4
Introdução à Programação C++ com Qt 4
 
Livro Linguagem C - Completo
Livro Linguagem C - CompletoLivro Linguagem C - Completo
Livro Linguagem C - Completo
 
Fundamentos da programação de computadores 2ª edição
Fundamentos da programação de computadores   2ª ediçãoFundamentos da programação de computadores   2ª edição
Fundamentos da programação de computadores 2ª edição
 
Introdução pascal
Introdução pascalIntrodução pascal
Introdução pascal
 
Javascript
JavascriptJavascript
Javascript
 
Tabela Hash
Tabela HashTabela Hash
Tabela Hash
 
Tópicos - Computacao Paralela Programação 3 (Visão geral)
Tópicos - Computacao Paralela Programação 3 (Visão geral)Tópicos - Computacao Paralela Programação 3 (Visão geral)
Tópicos - Computacao Paralela Programação 3 (Visão geral)
 

Semelhante a Estruturas de dados com C++ e STL

Estrutura de Dados - Aula de revisão de C na prática
Estrutura de Dados - Aula de revisão de C na práticaEstrutura de Dados - Aula de revisão de C na prática
Estrutura de Dados - Aula de revisão de C na práticaLeinylson Fontinele
 
Introdução a Linguagem C
Introdução a Linguagem CIntrodução a Linguagem C
Introdução a Linguagem CVê Rodrigues
 
Introdução à Linguagem de Programação C
Introdução à Linguagem de Programação CIntrodução à Linguagem de Programação C
Introdução à Linguagem de Programação CJose Augusto Cintra
 
Introdução a linguagem C# (CSharp)
Introdução a linguagem C# (CSharp)Introdução a linguagem C# (CSharp)
Introdução a linguagem C# (CSharp)Marcos Castro
 
IEEEweek 2017 @ DETI Univ. Aveiro - Workshop Python
IEEEweek 2017 @ DETI Univ. Aveiro - Workshop PythonIEEEweek 2017 @ DETI Univ. Aveiro - Workshop Python
IEEEweek 2017 @ DETI Univ. Aveiro - Workshop PythonDiogo Gomes
 
Pymordida0 Semana de computação da SOCIESC - 2008/10
Pymordida0 Semana de computação da SOCIESC - 2008/10Pymordida0 Semana de computação da SOCIESC - 2008/10
Pymordida0 Semana de computação da SOCIESC - 2008/10Marco Mendes
 
Apostila C++ Básico - UNIVERSIDADE ESTADUAL PAULISTA “JÚLIO DE MESQUITA FILHO”
Apostila C++ Básico - UNIVERSIDADE ESTADUAL PAULISTA “JÚLIO DE MESQUITA FILHO”Apostila C++ Básico - UNIVERSIDADE ESTADUAL PAULISTA “JÚLIO DE MESQUITA FILHO”
Apostila C++ Básico - UNIVERSIDADE ESTADUAL PAULISTA “JÚLIO DE MESQUITA FILHO”Kratos879
 
Curso de ShellScript - Lm09 shellscript9
Curso de ShellScript - Lm09 shellscript9Curso de ShellScript - Lm09 shellscript9
Curso de ShellScript - Lm09 shellscript9Pessoal
 
C curso - notas de aula
C   curso - notas de aulaC   curso - notas de aula
C curso - notas de aulaLoAlves21
 
Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...
Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...
Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...Leinylson Fontinele
 
Estrutura de Dados - Aula de revisão de c na prática
Estrutura de Dados - Aula de revisão de c na práticaEstrutura de Dados - Aula de revisão de c na prática
Estrutura de Dados - Aula de revisão de c na práticaLeinylson Fontinele
 

Semelhante a Estruturas de dados com C++ e STL (20)

Test-driven Development
Test-driven DevelopmentTest-driven Development
Test-driven Development
 
Estrutura de Dados - Aula de revisão de C na prática
Estrutura de Dados - Aula de revisão de C na práticaEstrutura de Dados - Aula de revisão de C na prática
Estrutura de Dados - Aula de revisão de C na prática
 
Introdução a Linguagem C
Introdução a Linguagem CIntrodução a Linguagem C
Introdução a Linguagem C
 
Introdução à Linguagem de Programação C
Introdução à Linguagem de Programação CIntrodução à Linguagem de Programação C
Introdução à Linguagem de Programação C
 
Introdução a linguagem C# (CSharp)
Introdução a linguagem C# (CSharp)Introdução a linguagem C# (CSharp)
Introdução a linguagem C# (CSharp)
 
IEEEweek 2017 @ DETI Univ. Aveiro - Workshop Python
IEEEweek 2017 @ DETI Univ. Aveiro - Workshop PythonIEEEweek 2017 @ DETI Univ. Aveiro - Workshop Python
IEEEweek 2017 @ DETI Univ. Aveiro - Workshop Python
 
Top0
Top0Top0
Top0
 
Top0
Top0Top0
Top0
 
Series lab
Series labSeries lab
Series lab
 
Pymordida0 Semana de computação da SOCIESC - 2008/10
Pymordida0 Semana de computação da SOCIESC - 2008/10Pymordida0 Semana de computação da SOCIESC - 2008/10
Pymordida0 Semana de computação da SOCIESC - 2008/10
 
Python
PythonPython
Python
 
Apostila C++ Básico - UNIVERSIDADE ESTADUAL PAULISTA “JÚLIO DE MESQUITA FILHO”
Apostila C++ Básico - UNIVERSIDADE ESTADUAL PAULISTA “JÚLIO DE MESQUITA FILHO”Apostila C++ Básico - UNIVERSIDADE ESTADUAL PAULISTA “JÚLIO DE MESQUITA FILHO”
Apostila C++ Básico - UNIVERSIDADE ESTADUAL PAULISTA “JÚLIO DE MESQUITA FILHO”
 
Apostila c++ básico
Apostila c++ básicoApostila c++ básico
Apostila c++ básico
 
Apostila c++ básico (1)
Apostila c++ básico (1)Apostila c++ básico (1)
Apostila c++ básico (1)
 
Curso de ShellScript - Lm09 shellscript9
Curso de ShellScript - Lm09 shellscript9Curso de ShellScript - Lm09 shellscript9
Curso de ShellScript - Lm09 shellscript9
 
Aula 3-lógica.pptx
Aula 3-lógica.pptxAula 3-lógica.pptx
Aula 3-lógica.pptx
 
C curso - notas de aula
C   curso - notas de aulaC   curso - notas de aula
C curso - notas de aula
 
Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...
Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...
Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...
 
Estrutura de Dados - Aula de revisão de c na prática
Estrutura de Dados - Aula de revisão de c na práticaEstrutura de Dados - Aula de revisão de c na prática
Estrutura de Dados - Aula de revisão de c na prática
 
Modulo02
Modulo02Modulo02
Modulo02
 

Mais de Marcos Castro

Árvores de Decisão
Árvores de DecisãoÁrvores de Decisão
Árvores de DecisãoMarcos Castro
 
Colored de Bruijn Graphs
Colored de Bruijn GraphsColored de Bruijn Graphs
Colored de Bruijn GraphsMarcos Castro
 
Maratona de Programação
Maratona de ProgramaçãoMaratona de Programação
Maratona de ProgramaçãoMarcos Castro
 
Ferramentas para Bioinformática
Ferramentas para BioinformáticaFerramentas para Bioinformática
Ferramentas para BioinformáticaMarcos Castro
 
A importância da Bioinformática
A importância da BioinformáticaA importância da Bioinformática
A importância da BioinformáticaMarcos Castro
 
Problema do Caixeiro Viajante
Problema do Caixeiro ViajanteProblema do Caixeiro Viajante
Problema do Caixeiro ViajanteMarcos Castro
 
Metaheurística Simulated Annealing
Metaheurística Simulated AnnealingMetaheurística Simulated Annealing
Metaheurística Simulated AnnealingMarcos Castro
 
Programação dinâmica
Programação dinâmicaProgramação dinâmica
Programação dinâmicaMarcos Castro
 
Busca em largura - BFS
Busca em largura - BFSBusca em largura - BFS
Busca em largura - BFSMarcos Castro
 
Análise Assintótica
Análise AssintóticaAnálise Assintótica
Análise AssintóticaMarcos Castro
 
Agrupamento de sequências biológicas
Agrupamento de sequências biológicasAgrupamento de sequências biológicas
Agrupamento de sequências biológicasMarcos Castro
 
Longest palindromic subsequence (LPS)
Longest palindromic subsequence (LPS)Longest palindromic subsequence (LPS)
Longest palindromic subsequence (LPS)Marcos Castro
 
Bioinformática com Biopython
Bioinformática com BiopythonBioinformática com Biopython
Bioinformática com BiopythonMarcos Castro
 

Mais de Marcos Castro (20)

Árvores de Decisão
Árvores de DecisãoÁrvores de Decisão
Árvores de Decisão
 
Colored de Bruijn Graphs
Colored de Bruijn GraphsColored de Bruijn Graphs
Colored de Bruijn Graphs
 
Maratona de Programação
Maratona de ProgramaçãoMaratona de Programação
Maratona de Programação
 
Bioinformática
BioinformáticaBioinformática
Bioinformática
 
Arquivos FASTQ
Arquivos FASTQArquivos FASTQ
Arquivos FASTQ
 
Ferramentas para Bioinformática
Ferramentas para BioinformáticaFerramentas para Bioinformática
Ferramentas para Bioinformática
 
A importância da Bioinformática
A importância da BioinformáticaA importância da Bioinformática
A importância da Bioinformática
 
Bioinformática
BioinformáticaBioinformática
Bioinformática
 
Problema do Caixeiro Viajante
Problema do Caixeiro ViajanteProblema do Caixeiro Viajante
Problema do Caixeiro Viajante
 
Metaheurística Simulated Annealing
Metaheurística Simulated AnnealingMetaheurística Simulated Annealing
Metaheurística Simulated Annealing
 
Algoritmos gulosos
Algoritmos gulososAlgoritmos gulosos
Algoritmos gulosos
 
Programação dinâmica
Programação dinâmicaProgramação dinâmica
Programação dinâmica
 
Busca em largura - BFS
Busca em largura - BFSBusca em largura - BFS
Busca em largura - BFS
 
Análise Assintótica
Análise AssintóticaAnálise Assintótica
Análise Assintótica
 
Python - Set
Python - SetPython - Set
Python - Set
 
Binary heap
Binary heapBinary heap
Binary heap
 
Fila de prioridades
Fila de prioridadesFila de prioridades
Fila de prioridades
 
Agrupamento de sequências biológicas
Agrupamento de sequências biológicasAgrupamento de sequências biológicas
Agrupamento de sequências biológicas
 
Longest palindromic subsequence (LPS)
Longest palindromic subsequence (LPS)Longest palindromic subsequence (LPS)
Longest palindromic subsequence (LPS)
 
Bioinformática com Biopython
Bioinformática com BiopythonBioinformática com Biopython
Bioinformática com Biopython
 

Estruturas de dados com C++ e STL

  • 1. CURSO DE MARATONA DE PROGRAMAÇÃO ICT-Unifesp
  • 2.  Iremos utilizar a STL (biblioteca padrão do C++).  Por que?  STL possui várias estruturas implementadas.  Estudos dizem que você irá escrever menos e poderá obter mais !!  Lembre-se:  A STL ajuda, mas não faz milagres!  Estude os mais diversos algoritmos e técnicas de programação.  Use a STL de forma adequada.  Exemplo: uso vetor (vector) ou lista (list) ?  Resolva (muitos=2)^10 problemas. 2
  • 3.  O objetivo é maratona de programação.  A maratona é democrática, você pode programar até em Java!  Com a palavra ViniGodoy: 3
  • 4.  Relax, não é preciso dominar a linguagem...  Só precisamos saber um pouquinho...  Você pode misturar C e C++.  Ou pode fazer o código totalmente em C e salvar como .cpp :D  Seu foco maior será nos algoritmos e técnicas para resolver os problemas.  C++ e STL te ajudarão a não ter maiores dores de cabeça! 4
  • 5. 5
  • 6.  No C fazíamos: 6
  • 7.  No C++ utilizando STL:  Não esquecer de incluir: #include <vector> 7
  • 8.  Ok, escrevemos menos quando fizemos em C, mas você pode passar para o construtor a quantidade de elementos, será inicializado tudo com 0 e aí você só atribui os valores: 8
  • 9.  O vector possui várias operações.  Vimos a função push_back que insere elementos, mas existem outras...  A função erase apaga elementos:  A função clear que remove todos os elementos: v.clear(); 9
  • 10.  Pergunta: remove o último elemento ? 10
  • 11.  Pergunta: remove o último elemento ? 11
  • 12.  Corrigindo...  O begin() aponta para o primeiro elemento e o end() não aponta para o último elemento, entendeu? Nem eu! 12
  • 14.  String do C++ também é legal, você pode passar o conteúdo no construtor: 14
  • 15.  Mas eu tenho uma string do C! Ok ... 15
  • 16.  Mas eu tenho uma string do C, quero passar para C++ e quero imprimir a string do C++ com o saudoso printf! Ok ...... 16
  • 17.  As funções mantêm um certo padrão.  Lembra das funções size() e erase() ?  Elas existem para string! O que é impresso na última linha? 17
  • 18.  Copiando uma string (saudades da strcpy ??) : 18
  • 19.  Desafio: o que imprimirá cada um dos códigos? 19
  • 21.  Acessando os elementos: 21
  • 22.  Lembra da pilha que você teve que implementar em estrutura de dados?  Sem sofrimento, basta você incluir: #include <stack> 22
  • 23.  A remoção é feita com a função pop(): 23
  • 24.  Verificar se a pilha está vazia: 24
  • 25.  Lembra da fila do banco? Inclua: #include <queue> 25
  • 26.  Utilize a função back() para saber quem é o último da fila: 26
  • 27.  Quer associar elementos por chave/valor? #include <map> 27
  • 28.  Verificando se uma chave existe: 28
  • 29.  Não temos a chave “blabla”, o que será impresso? 29
  • 30.  Percorrendo o map...  A impressão ocorre na ordem em que os elementos foram inseridos? 30
  • 31.  Permite inserir elementos no início e no final:  #include <queue> ou #include <deque> 31
  • 33.  E se fosse uma fila, funcionaria o código abaixo? 33
  • 34.  E se fosse uma fila, funcionaria o código abaixo? 34
  • 35.  O set não permite elementos repetidos. Basta incluir: #include <set>  Os elementos são mantidos em ordem crescente. 35
  • 36.  Mas eu preciso de um set com elementos repetidos em ordem crescente.  Seus problemas acabaram: multiset 36
  • 37.  Ouvi dizer que em C++ você programa com classe...  Struct é quase igual a uma classe... O código abaixo compila? 37
  • 38.  Agora sim código abaixo compila!  Os membros por default de uma classe são privados, então colocamos o public: 38
  • 39.  O código abaixo compila!  Os membros por default de uma struct são públicos. 39
  • 40.  Alguns algoritmos estão implementados para você utilizar.  #include <algorithm>  Ordenar os elementos em ordem crescente: sort() 40
  • 41.  Imprimir todas as permutações: next_permutation() 41
  • 42.  Busca binária: binary_search() 42
  • 43. 43
  • 44.  Tem quase tudo aqui: http://www.cplusplus.com/reference  Curso de C++ (~ 100 vídeo-aulas): https://goo.gl/BFbNOL  Maratona de Programação com STL: http://goo.gl/eyhOzq  Contato: mcastrosouza@live.com 44