Download - Estruturas de dados com C++ e STL
![Page 1: Estruturas de dados com C++ e STL](https://reader030.vdocuments.mx/reader030/viewer/2022012914/58730bea1a28ab99088b6d79/html5/thumbnails/1.jpg)
ESTRUTURAS DE DADOS COM C++ E STLCURSO DE MARATONA DE PROGRAMAÇÃOICT-Unifesp
![Page 2: Estruturas de dados com C++ e STL](https://reader030.vdocuments.mx/reader030/viewer/2022012914/58730bea1a28ab99088b6d79/html5/thumbnails/2.jpg)
2
STL 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.
![Page 3: Estruturas de dados com C++ e STL](https://reader030.vdocuments.mx/reader030/viewer/2022012914/58730bea1a28ab99088b6d79/html5/thumbnails/3.jpg)
3
POR QUE C++? O objetivo é maratona de programação. A maratona é democrática, você pode programar até em Java! Com a palavra ViniGodoy:
![Page 4: Estruturas de dados com C++ e STL](https://reader030.vdocuments.mx/reader030/viewer/2022012914/58730bea1a28ab99088b6d79/html5/thumbnails/4.jpg)
4
NÃO SABE C++ ? 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!
![Page 5: Estruturas de dados com C++ e STL](https://reader030.vdocuments.mx/reader030/viewer/2022012914/58730bea1a28ab99088b6d79/html5/thumbnails/5.jpg)
5
DECLARE O ESPAÇO DE NOMES PADRÃO
![Page 6: Estruturas de dados com C++ e STL](https://reader030.vdocuments.mx/reader030/viewer/2022012914/58730bea1a28ab99088b6d79/html5/thumbnails/6.jpg)
6
VETOR No C fazíamos:
![Page 7: Estruturas de dados com C++ e STL](https://reader030.vdocuments.mx/reader030/viewer/2022012914/58730bea1a28ab99088b6d79/html5/thumbnails/7.jpg)
7
VETOR No C++ utilizando STL:
Não esquecer de incluir: #include <vector>
![Page 8: Estruturas de dados com C++ e STL](https://reader030.vdocuments.mx/reader030/viewer/2022012914/58730bea1a28ab99088b6d79/html5/thumbnails/8.jpg)
8
VETOR 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:
![Page 9: Estruturas de dados com C++ e STL](https://reader030.vdocuments.mx/reader030/viewer/2022012914/58730bea1a28ab99088b6d79/html5/thumbnails/9.jpg)
9
VETOR 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();
![Page 10: Estruturas de dados com C++ e STL](https://reader030.vdocuments.mx/reader030/viewer/2022012914/58730bea1a28ab99088b6d79/html5/thumbnails/10.jpg)
10
VETOR Pergunta: remove o último elemento ?
![Page 11: Estruturas de dados com C++ e STL](https://reader030.vdocuments.mx/reader030/viewer/2022012914/58730bea1a28ab99088b6d79/html5/thumbnails/11.jpg)
11
VETOR Pergunta: remove o último elemento ?
![Page 12: Estruturas de dados com C++ e STL](https://reader030.vdocuments.mx/reader030/viewer/2022012914/58730bea1a28ab99088b6d79/html5/thumbnails/12.jpg)
12
VETOR Corrigindo...
O begin() aponta para o primeiro elemento e o end() não aponta para o último elemento, entendeu? Nem eu!
![Page 13: Estruturas de dados com C++ e STL](https://reader030.vdocuments.mx/reader030/viewer/2022012914/58730bea1a28ab99088b6d79/html5/thumbnails/13.jpg)
13
VETOR Utilizando C/C++:
![Page 14: Estruturas de dados com C++ e STL](https://reader030.vdocuments.mx/reader030/viewer/2022012914/58730bea1a28ab99088b6d79/html5/thumbnails/14.jpg)
14
STRING String do C++ também é legal, você pode passar o conteúdo no
construtor:
![Page 15: Estruturas de dados com C++ e STL](https://reader030.vdocuments.mx/reader030/viewer/2022012914/58730bea1a28ab99088b6d79/html5/thumbnails/15.jpg)
15
STRING Mas eu tenho uma string do C! Ok ...
![Page 16: Estruturas de dados com C++ e STL](https://reader030.vdocuments.mx/reader030/viewer/2022012914/58730bea1a28ab99088b6d79/html5/thumbnails/16.jpg)
16
STRING Mas eu tenho uma string do C, quero passar para C++ e quero imprimir a
string do C++ com o saudoso printf! Ok ......
![Page 17: Estruturas de dados com C++ e STL](https://reader030.vdocuments.mx/reader030/viewer/2022012914/58730bea1a28ab99088b6d79/html5/thumbnails/17.jpg)
17
STRING 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?
![Page 18: Estruturas de dados com C++ e STL](https://reader030.vdocuments.mx/reader030/viewer/2022012914/58730bea1a28ab99088b6d79/html5/thumbnails/18.jpg)
18
STRING Copiando uma string (saudades da strcpy ??) :
![Page 19: Estruturas de dados com C++ e STL](https://reader030.vdocuments.mx/reader030/viewer/2022012914/58730bea1a28ab99088b6d79/html5/thumbnails/19.jpg)
19
STRING Desafio: o que imprimirá cada um dos códigos?
![Page 20: Estruturas de dados com C++ e STL](https://reader030.vdocuments.mx/reader030/viewer/2022012914/58730bea1a28ab99088b6d79/html5/thumbnails/20.jpg)
20
LIST #include <list>
![Page 21: Estruturas de dados com C++ e STL](https://reader030.vdocuments.mx/reader030/viewer/2022012914/58730bea1a28ab99088b6d79/html5/thumbnails/21.jpg)
21
LIST Acessando os elementos:
![Page 22: Estruturas de dados com C++ e STL](https://reader030.vdocuments.mx/reader030/viewer/2022012914/58730bea1a28ab99088b6d79/html5/thumbnails/22.jpg)
22
STACK Lembra da pilha que você teve que implementar em estrutura de dados? Sem sofrimento, basta você incluir: #include <stack>
![Page 23: Estruturas de dados com C++ e STL](https://reader030.vdocuments.mx/reader030/viewer/2022012914/58730bea1a28ab99088b6d79/html5/thumbnails/23.jpg)
23
STACK A remoção é feita com a função pop():
![Page 24: Estruturas de dados com C++ e STL](https://reader030.vdocuments.mx/reader030/viewer/2022012914/58730bea1a28ab99088b6d79/html5/thumbnails/24.jpg)
24
STACK Verificar se a pilha está vazia:
![Page 25: Estruturas de dados com C++ e STL](https://reader030.vdocuments.mx/reader030/viewer/2022012914/58730bea1a28ab99088b6d79/html5/thumbnails/25.jpg)
25
QUEUE Lembra da fila do banco? Inclua: #include <queue>
![Page 26: Estruturas de dados com C++ e STL](https://reader030.vdocuments.mx/reader030/viewer/2022012914/58730bea1a28ab99088b6d79/html5/thumbnails/26.jpg)
26
QUEUE Utilize a função back() para saber quem é o último da fila:
![Page 27: Estruturas de dados com C++ e STL](https://reader030.vdocuments.mx/reader030/viewer/2022012914/58730bea1a28ab99088b6d79/html5/thumbnails/27.jpg)
27
MAP Quer associar elementos por chave/valor? #include <map>
![Page 28: Estruturas de dados com C++ e STL](https://reader030.vdocuments.mx/reader030/viewer/2022012914/58730bea1a28ab99088b6d79/html5/thumbnails/28.jpg)
28
MAP Verificando se uma chave existe:
![Page 29: Estruturas de dados com C++ e STL](https://reader030.vdocuments.mx/reader030/viewer/2022012914/58730bea1a28ab99088b6d79/html5/thumbnails/29.jpg)
29
MAP Não temos a chave “blabla”, o que será impresso?
![Page 30: Estruturas de dados com C++ e STL](https://reader030.vdocuments.mx/reader030/viewer/2022012914/58730bea1a28ab99088b6d79/html5/thumbnails/30.jpg)
30
MAP Percorrendo o map...
A impressão ocorre na ordem em que os elementos foram inseridos?
![Page 31: Estruturas de dados com C++ e STL](https://reader030.vdocuments.mx/reader030/viewer/2022012914/58730bea1a28ab99088b6d79/html5/thumbnails/31.jpg)
31
DEQUE Permite inserir elementos no início e no final: #include <queue> ou #include <deque>
![Page 32: Estruturas de dados com C++ e STL](https://reader030.vdocuments.mx/reader030/viewer/2022012914/58730bea1a28ab99088b6d79/html5/thumbnails/32.jpg)
32
DEQUE Percorrendo:
![Page 33: Estruturas de dados com C++ e STL](https://reader030.vdocuments.mx/reader030/viewer/2022012914/58730bea1a28ab99088b6d79/html5/thumbnails/33.jpg)
33
DEQUE E se fosse uma fila, funcionaria o código abaixo?
![Page 34: Estruturas de dados com C++ e STL](https://reader030.vdocuments.mx/reader030/viewer/2022012914/58730bea1a28ab99088b6d79/html5/thumbnails/34.jpg)
34
DEQUE E se fosse uma fila, funcionaria o código abaixo?
![Page 35: Estruturas de dados com C++ e STL](https://reader030.vdocuments.mx/reader030/viewer/2022012914/58730bea1a28ab99088b6d79/html5/thumbnails/35.jpg)
35
SET O set não permite elementos repetidos. Basta incluir: #include <set> Os elementos são mantidos em ordem crescente.
![Page 36: Estruturas de dados com C++ e STL](https://reader030.vdocuments.mx/reader030/viewer/2022012914/58730bea1a28ab99088b6d79/html5/thumbnails/36.jpg)
36
MULTISET Mas eu preciso de um set com elementos repetidos em ordem crescente. Seus problemas acabaram: multiset
![Page 37: Estruturas de dados com C++ e STL](https://reader030.vdocuments.mx/reader030/viewer/2022012914/58730bea1a28ab99088b6d79/html5/thumbnails/37.jpg)
37
CLASSES Ouvi dizer que em C++ você programa com classe... Struct é quase igual a uma classe... O código abaixo compila?
![Page 38: Estruturas de dados com C++ e STL](https://reader030.vdocuments.mx/reader030/viewer/2022012914/58730bea1a28ab99088b6d79/html5/thumbnails/38.jpg)
38
CLASSES Agora sim código abaixo compila! Os membros por default de uma classe são privados, então colocamos o
public:
![Page 39: Estruturas de dados com C++ e STL](https://reader030.vdocuments.mx/reader030/viewer/2022012914/58730bea1a28ab99088b6d79/html5/thumbnails/39.jpg)
39
CLASSES O código abaixo compila! Os membros por default de uma struct são públicos.
![Page 40: Estruturas de dados com C++ e STL](https://reader030.vdocuments.mx/reader030/viewer/2022012914/58730bea1a28ab99088b6d79/html5/thumbnails/40.jpg)
40
ALGORITHM Alguns algoritmos estão implementados para você utilizar. #include <algorithm> Ordenar os elementos em ordem crescente: sort()
![Page 41: Estruturas de dados com C++ e STL](https://reader030.vdocuments.mx/reader030/viewer/2022012914/58730bea1a28ab99088b6d79/html5/thumbnails/41.jpg)
41
ALGORITHM Imprimir todas as permutações: next_permutation()
![Page 42: Estruturas de dados com C++ e STL](https://reader030.vdocuments.mx/reader030/viewer/2022012914/58730bea1a28ab99088b6d79/html5/thumbnails/42.jpg)
42
ALGORITHM Busca binária: binary_search()
![Page 43: Estruturas de dados com C++ e STL](https://reader030.vdocuments.mx/reader030/viewer/2022012914/58730bea1a28ab99088b6d79/html5/thumbnails/43.jpg)
43
DÚVIDAS?
![Page 44: Estruturas de dados com C++ e STL](https://reader030.vdocuments.mx/reader030/viewer/2022012914/58730bea1a28ab99088b6d79/html5/thumbnails/44.jpg)
44
REFERÊNCIAS 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: [email protected]