Buscar

18-STL e E-S

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 30 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 30 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 30 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Standard Template Library
e
Fluxos de Entrada e Saída
Profa. Dra. Ieda Hidalgo
E-mail: iedahidalgo@ft.unicamp.br
Definição
Standard Template Library - STL
Biblioteca Padrão de Modelos (Gabaritos)
-------------------------------------------------------------------------
STL é uma biblioteca de estruturas de dados e
funções, integrada à biblioteca padrão de C++, que
utiliza o conceito de programação genérica (template).
Ela permite aos programadores implementar
facilmente estruturas de dados aumentando
significativamente sua produtividade.
Em outras palavras...
STL faz uso de templates para implementação
de estrutura de dados e funções que
manipulam tipos genéricos de forma eficiente.
Estrutura de dados: vetores, listas, pilhas, etc.
Funções: busca, ordenação, etc.
Observações
• Em STL, todas as classes, objetos e funções são
definidos com o namespace std.
• No STL também foi adicionado um tipo “String”,
que facilita as operações de manipulação de
caracteres quando comparado a biblioteca
string.h da linguagem C.
Componentes Básicos da STL
� Containers
� Iteradores 
� Algoritmos 
Containers
Containers é o nome dado às estruturas de
dados em STL. Eles armazenam valores de
um dado tipo (int, float, etc).
Exemplos:
Sequenciais: vetor, deque e lista.
Associativos: set, multiset, map, e multimap.
Adaptativos: pilha e fila.
Leka
Highlight
Leka
Highlight
Leka
Highlight
Descrição dos Containers
Container Descrição
Vetor Inserções e remoções no fim da estrutura.
Deque Inserções e remoções no início e no fim da estrutura.
Lista Inserções e remoções em qualquer lugar da estrutura.
Set Conjunto, duplicatas não permitidas.
Multiset Conjunto, duplicatas permitidas.
Map Mapeamento um para um, duplicatas não permitidas.
Multimap Mapeamento um para muitos, duplicatas não permitidas.
Pilha Último elemento a entrar na estrutura é o primeiro a sair.
Fila Primeiro elemento a entrar na estrutura é o primeiro a sair.
Exemplo: Cointainer “Vector”
# include <vector>
using std::vector;
int main()
{
vector<int> v;
v.push_back(4);
v.push_back(2);
v.push_back(3);
v[0] = 1;
for (int i = 0; i < v.size(); i++)
cout << v[i] << endl;
return 0;
}
Leka
Highlight
Leka
Highlight
Exemplo: 
Cointainer 
“Map”
# include <map>
# include <string>
# include <iostream>
using namespace std;
int main()
{ 
map<string, int> digitos;
string s;
digitos[“zero”] = 0;
digitos[“um”] = 1;
digitos[“dois”] = 2;
digitos[“três”] = 3;
digitos[“quatro”] = 4;
digitos[“cinco”] = 5;
digitos[“seis”] = 6;
digitos[“sete”] = 7;
digitos[“oito”] = 8;
digitos[“nove”] = 9;
while (cin >> s)
cout << digitos[s] << endl;
return 0;
}
Iteradores
Em STL, iteradores são os ponteiros inteligentes
que permitem uma maneira unificada de percorre
os dados dos containers. Eles percorrem os
elementos dos containers da mesma forma que
um índice percorre os elementos de um array.
Somente conteineres sequenciais e adaptativos
podem ser percorridos com iteradores.
Leka
Highlight
Leka
Highlight
Leka
Highlight
Tipos de Iteradores
Categoria Descrição
Entrada
Usado para ler um elemento de um container.
Pode mover-se somente para a frente, um elemento a cada vez.
Saída
Usado para escrever um elemento em um container.
Pode mover-se somente para a frente, um elemento a cada vez.
Avanço
Combina os recursos dos iteradores de entrada e de saída e
retém sua posição no container (como informação de estado).
Bidirecional Combina os recursos do iterador avanço com a habilidade de
mover-se para trás.
Acesso 
aleatório
Combina os recursos do iterador bidirecional com a habilidade de
acessar diretamente qualquer elemento do container, isto é, saltar
para frente ou para trás um número arbitrário de elementos.
# include <map>
# include <string>
# include <iostream>
using namespace std;
int main()
{
map<string, int> digitos;
map<string, int>::iterator iter; 
string s;
digitos[“zero”] = 0;
digitos[“um”] = 1;
digitos[“dois”] = 2;
digitos[“três”] = 3;
digitos[“quatro”] = 4;
digitos[“cinco”] = 5;
for (iter = digitos.begin(); iter != digitos.end(); iter++)
cout << iter->first << “ = ” << iter->second << endl;
return 0;
}
Observções
• Este iterator só pode ser usado sobre
objectos do tipo map<string, int>. Não pode
ser usado para iterar sobre, por exemplo, um
vector<int> nem sobre um map<int, int>.
• O método digitos.begin() retorna um iterator
para o início do mapa.
• O método digitos.end() retorna um iterator
para um elemento após o último do mapa.
Exemplo:
Para verificar se uma dada string existe num mapa.
Utilidades para “digitos.end()”
• Identificar o fim da estrutura.
• Procurar um elemento na estrutura.
if (digitos.find(“onze”) == digitos.end())
// não existe!
else
// existe!
Leka
Highlight
Leka
Highlight
Leka
Highlight
Algoritmos
Os algoritmos correspondem às ações a
serem executadas sobre os containers. Eles
não dependem dos detalhes de
implementação dos containers sobre os
quais eles operam.
Exemplos:
find, sort, bynary-search (algoritmos
básicos de pesquisa e classificação).
Leka
Highlight
Leka
Highlight
Exemplo: Algoritmo “Sort”
# include <algorithm>
# include <vector>
# include <iostream>
using namespace std;
int main()
{
int n;
vector <int> v;
cout << “0 para parar:\n”;
while (cin >> n)
{
if (n==0)
break;
v.push_back(n);
}
sort(v.begin(), v.end());
for (vector<int>::interator iter = v.begin(); iter != v.end(); iter++)
cout << *iter << endl;
return 0;
}
Observações
• Para ordenar os elementos de um vector
podemos usar o algoritmo sort.
• O sort precisa de 2 argumentos, um iterator para
o início da sequência a ordenar e outro para o
fim.
• Se ao invés de um vector tivéssemos usado uma
lista, o sort seria chamado da mesma forma.
Críticas para STL
1. As mensagens de erro relacionadas à STL
tendem a ser longas e difíceis de serem
interpretadas, dificultando o desenvolvimento.
2. Quanto maior o número de tipos de dados
diferentes utilizados em templates:
• Mais código é gerado pelo compilador
• Mais memória é utilizada.
Fluxo de Dados
Entrada e Saída
-
arquivo texto 
banco de dados
Arquivo Texto 1
#include <fstream.h>
Gravação do 
Arquivo Texto 1
#include <fstream.h>
Leitura do 
Arquivo Texto 1
Leitura do 
Arquivo Texto 1 
(continuação)
Arquivo Texto 2
#include <fstream.h>
Gravação do 
Arquivo Texto 2
#include <fstream.h>
Leitura do 
Arquivo Texto 2
Leitura do 
Arquivo Texto 2 
(continuação)
Classe
TSearchCodTxt
Inserção de Registro em Tabela
Edição de Registro em Tabela

Outros materiais