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