SlideShare una empresa de 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

Más contenido relacionado

La actualidad más candente

Exercicios resolvidos visu alg vetores
Exercicios resolvidos visu alg vetoresExercicios resolvidos visu alg vetores
Exercicios resolvidos visu alg vetoresWillians Miyabara
 
Aula 01 - Introdução ao C++
Aula 01 - Introdução ao C++Aula 01 - Introdução ao C++
Aula 01 - Introdução ao C++PeslPinguim
 
Pseudocódigo - Estrutura de Repetição (Lógica de Programação)
Pseudocódigo - Estrutura de Repetição (Lógica de Programação)Pseudocódigo - Estrutura de Repetição (Lógica de Programação)
Pseudocódigo - Estrutura de Repetição (Lógica de Programação)Gercélia Ramos
 
Alguns algoritmos resolvidos
Alguns algoritmos resolvidosAlguns algoritmos resolvidos
Alguns algoritmos resolvidosjaoozinhoqi123
 
Apresentação recursividade rev2
Apresentação recursividade rev2Apresentação recursividade rev2
Apresentação recursividade rev2Rogerio Oliveira
 
Logica Algoritmo 07 Subalgoritmos
Logica Algoritmo 07 SubalgoritmosLogica Algoritmo 07 Subalgoritmos
Logica Algoritmo 07 SubalgoritmosRegis Magalhã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çõesElaine Cecília Gatto
 
Lógica de Programação e Algoritmos
Lógica de Programação e AlgoritmosLógica de Programação e Algoritmos
Lógica de Programação e AlgoritmosMario Jorge Pereira
 
Logica Algoritmo 08 Recursividade
Logica Algoritmo 08 RecursividadeLogica Algoritmo 08 Recursividade
Logica Algoritmo 08 RecursividadeRegis Magalhães
 
Introdução a Linguagem de Programação C
Introdução a Linguagem de Programação CIntrodução a Linguagem de Programação C
Introdução a Linguagem de Programação CGercélia Ramos
 
Algoritmos e lp parte 4-vetores matrizes e registros
Algoritmos e lp parte 4-vetores matrizes e registrosAlgoritmos e lp parte 4-vetores matrizes e registros
Algoritmos e lp parte 4-vetores matrizes e registrosMauro Pereira
 
resume algo 2023.pdf
resume algo 2023.pdfresume algo 2023.pdf
resume algo 2023.pdfsalah fenni
 
Lógica de programação { para iniciantes }
Lógica de programação { para iniciantes }Lógica de programação { para iniciantes }
Lógica de programação { para iniciantes }Mariana Camargo
 
Aula 01 introdução a linguagem pascal
Aula 01   introdução a linguagem pascalAula 01   introdução a linguagem pascal
Aula 01 introdução a linguagem pascalTácito Graça
 
Estrutura de Dados - Aula 02 - Estrutura de Dados e TAD
Estrutura de Dados - Aula 02 - Estrutura de Dados e TADEstrutura de Dados - Aula 02 - Estrutura de Dados e TAD
Estrutura de Dados - Aula 02 - Estrutura de Dados e TADLeinylson Fontinele
 
Exercicios resolvidos visuAlg
Exercicios resolvidos visuAlgExercicios resolvidos visuAlg
Exercicios resolvidos visuAlgWillians Miyabara
 

La actualidad más candente (20)

Exercicios resolvidos visu alg vetores
Exercicios resolvidos visu alg vetoresExercicios resolvidos visu alg vetores
Exercicios resolvidos visu alg vetores
 
Aula 01 - Introdução ao C++
Aula 01 - Introdução ao C++Aula 01 - Introdução ao C++
Aula 01 - Introdução ao C++
 
Pseudocódigo - Estrutura de Repetição (Lógica de Programação)
Pseudocódigo - Estrutura de Repetição (Lógica de Programação)Pseudocódigo - Estrutura de Repetição (Lógica de Programação)
Pseudocódigo - Estrutura de Repetição (Lógica de Programação)
 
Alguns algoritmos resolvidos
Alguns algoritmos resolvidosAlguns algoritmos resolvidos
Alguns algoritmos resolvidos
 
Apresentação recursividade rev2
Apresentação recursividade rev2Apresentação recursividade rev2
Apresentação recursividade rev2
 
Logica Algoritmo 07 Subalgoritmos
Logica Algoritmo 07 SubalgoritmosLogica Algoritmo 07 Subalgoritmos
Logica Algoritmo 07 Subalgoritmos
 
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
 
Lógica de Programação e Algoritmos
Lógica de Programação e AlgoritmosLógica de Programação e Algoritmos
Lógica de Programação e Algoritmos
 
Logica Algoritmo 08 Recursividade
Logica Algoritmo 08 RecursividadeLogica Algoritmo 08 Recursividade
Logica Algoritmo 08 Recursividade
 
Introdução a Linguagem de Programação C
Introdução a Linguagem de Programação CIntrodução a Linguagem de Programação C
Introdução a Linguagem de Programação C
 
Linguagem C 06 Funcoes
Linguagem C 06 FuncoesLinguagem C 06 Funcoes
Linguagem C 06 Funcoes
 
Algoritmos e lp parte 4-vetores matrizes e registros
Algoritmos e lp parte 4-vetores matrizes e registrosAlgoritmos e lp parte 4-vetores matrizes e registros
Algoritmos e lp parte 4-vetores matrizes e registros
 
Algoritmos 05 - Estruturas de repetição
Algoritmos 05 - Estruturas de repetiçãoAlgoritmos 05 - Estruturas de repetição
Algoritmos 05 - Estruturas de repetição
 
resume algo 2023.pdf
resume algo 2023.pdfresume algo 2023.pdf
resume algo 2023.pdf
 
Lógica de programação { para iniciantes }
Lógica de programação { para iniciantes }Lógica de programação { para iniciantes }
Lógica de programação { para iniciantes }
 
Aula 01 introdução a linguagem pascal
Aula 01   introdução a linguagem pascalAula 01   introdução a linguagem pascal
Aula 01 introdução a linguagem pascal
 
Estrutura de Dados - Aula 02 - Estrutura de Dados e TAD
Estrutura de Dados - Aula 02 - Estrutura de Dados e TADEstrutura de Dados - Aula 02 - Estrutura de Dados e TAD
Estrutura de Dados - Aula 02 - Estrutura de Dados e TAD
 
Introdução à Linguagem C
Introdução à Linguagem CIntrodução à Linguagem C
Introdução à Linguagem C
 
C++ Funções
 C++ Funções C++ Funções
C++ Funções
 
Exercicios resolvidos visuAlg
Exercicios resolvidos visuAlgExercicios resolvidos visuAlg
Exercicios resolvidos visuAlg
 

Destacado

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
 

Destacado (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)
 

Similar 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
 

Similar 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
 

Más 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
 

Más 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