44
ESTRUTURAS DE DADOS COM C++ E STL CURSO DE MARATONA DE PROGRAMAÇÃO ICT-Unifesp

Estruturas de dados com C++ e STL

Embed Size (px)

Citation preview

Page 1: Estruturas de dados com C++ e STL

ESTRUTURAS DE DADOS COM C++ E STLCURSO DE MARATONA DE PROGRAMAÇÃOICT-Unifesp

Page 2: Estruturas de dados com C++ e STL

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

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

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

5

DECLARE O ESPAÇO DE NOMES PADRÃO

Page 6: Estruturas de dados com C++ e STL

6

VETOR No C fazíamos:

Page 7: Estruturas de dados com C++ e STL

7

VETOR No C++ utilizando STL:

Não esquecer de incluir: #include <vector>

Page 8: Estruturas de dados com C++ e STL

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

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

10

VETOR Pergunta: remove o último elemento ?

Page 11: Estruturas de dados com C++ e STL

11

VETOR Pergunta: remove o último elemento ?

Page 12: Estruturas de dados com C++ e STL

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

13

VETOR Utilizando C/C++:

Page 14: Estruturas de dados com C++ e STL

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

15

STRING Mas eu tenho uma string do C! Ok ...

Page 16: Estruturas de dados com C++ e STL

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

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

18

STRING Copiando uma string (saudades da strcpy ??) :

Page 19: Estruturas de dados com C++ e STL

19

STRING Desafio: o que imprimirá cada um dos códigos?

Page 20: Estruturas de dados com C++ e STL

20

LIST #include <list>

Page 21: Estruturas de dados com C++ e STL

21

LIST Acessando os elementos:

Page 22: Estruturas de dados com C++ e STL

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

23

STACK A remoção é feita com a função pop():

Page 24: Estruturas de dados com C++ e STL

24

STACK Verificar se a pilha está vazia:

Page 25: Estruturas de dados com C++ e STL

25

QUEUE Lembra da fila do banco? Inclua: #include <queue>

Page 26: Estruturas de dados com C++ e STL

26

QUEUE Utilize a função back() para saber quem é o último da fila:

Page 27: Estruturas de dados com C++ e STL

27

MAP Quer associar elementos por chave/valor? #include <map>

Page 28: Estruturas de dados com C++ e STL

28

MAP Verificando se uma chave existe:

Page 29: Estruturas de dados com C++ e STL

29

MAP Não temos a chave “blabla”, o que será impresso?

Page 30: Estruturas de dados com C++ e STL

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

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

32

DEQUE Percorrendo:

Page 33: Estruturas de dados com C++ e STL

33

DEQUE E se fosse uma fila, funcionaria o código abaixo?

Page 34: Estruturas de dados com C++ e STL

34

DEQUE E se fosse uma fila, funcionaria o código abaixo?

Page 35: Estruturas de dados com C++ e STL

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

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

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

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

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

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

41

ALGORITHM Imprimir todas as permutações: next_permutation()

Page 42: Estruturas de dados com C++ e STL

42

ALGORITHM Busca binária: binary_search()

Page 43: Estruturas de dados com C++ e STL

43

DÚVIDAS?

Page 44: Estruturas de dados com C++ e STL

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]