Estruturas de Dados - STL

Documentos relacionados
Laboratório de programação II

PCC104 - Projeto e Análise de Algoritmos

IV Escola de Inverno Maratona de Programação UNIFEI Intermediário I

O container vector funciona como um vetor comum, ou seja, os blocos de objetos estão contíguos, permitindo acesso aleatório.

Estruturas de Dados - Filas

Recursividade UFOP 1/48

Standard Template Library (STL)

Prof. Marco Antonio M. Carvalho

Algoritmos e Estruturas de Dados 2007/2008

Aula 07. Estruturas de dados Lista, Pilha, Fila Pair, Map, Set e Bitset

Tabelas Hash & Outras Estruturas

INF Estruturas de dados avançadas. Standard Template Library

Tipos de Dados Abstractos Estruturas Lineares Listas

STL significa Standard Template Library. É uma biblioteca que contém algumas estruturas de dados, como árvore binária e lista encadeada.

Algoritmos e Estruturas de Dados 2006/2007

Tipo de Dados Abstracto

Universidade Federal do Espírito Santo Centro de Ciências Agrárias CCA UFES Departamento de Computação. Estruturas de Dados

Guia de Consulta Rápida C++ STL. Joel Saade. Novatec Editora

Física Computacional 17 STL

Estruturas de Informação. Biblioteca STL. Departamento de Engenharia Informática (DEI/ISEP) Fátima Rodrigues

Algoritmos e Estruturas de Dados 2005/2006

Parte IV. Linguagens de Programação. Relembrando da Última Aula... Contêineres. STL (Standard Template Library) Prof. Miguel Elias Mitre Campista

Programação Orientada a Objetos para Redes de Computadores. STL (Standard Template Library) Library) Contêineres. Contêineres PARTE 2

SCC-210 Algoritmos Avançados

SCC-211 Lab. Algoritmos Avançados

Linguagens de Programação

Algoritmos e Estruturas de Dados

Templates. Programação de Computadores Estruturas de Dados. Alan de Freitas. Considere o código abaixo que encontra o maior elementos entre 3 ints

Algoritmos e Estruturas de Dados 2009/2010

Pedro Vasconcelos DCC/FCUP. Programação Funcional 17 a Aula Tipos abstratos

Programação Funcional 13 a Aula Tipos abstratos

CIC 110 Análise e Projeto de Algoritmos I

1. Faça um programa que leia uma string digitada pelo usuário e salve em um arquivo em branco.

Estruturas de Dados Encadeadas

Aula 8- Standard Template Library. Arthur Ribacki Gabriel Portal Leonardo Chatain Luiz Fernando Scheidegger Rosália Schneider

Filas de prioridade. Algoritmos e Estruturas de Dados AED 2005/2006 AEDA 2009/2010

Algoritmos e Estruturas de Dados 2006/2007

Biblioteca STL aplicada à Maratona de

Universidade Federal de Mato Grosso do Sul. Standard Template Library (STL)

Estrutura de Dados: Aula 3 - Linguagem C

CIV 2802 Sistemas Gráficos para Engenharia º Trabalho: Programação básica em C++: Classes

Algoritmos e Estrutura de Dados Aula 02 Listas em Python

Estruturas de Dados. Túlio Toffolo BCC402 Aula 02 Algoritmos e Programação Avançada

Orientação a Objetos - Programação em C++

# Estrutura de Dados # Aula 06 Pilhas Estáticas. Prof. Leinylson Fontinele Pereira

Pilhas. Algoritmos e Estruturas de Dados I. José Augusto Baranauskas Departamento de Física e Matemática FFCLRP-USP

FICHA 8 PILHAS E FILAS

Estrutura de Dados I Bacharelado em Sistemas de Informação FACOM UFU Lista de Exercícios

Programação Orientada a Objetos

Exemplos. Alocação Dinâmica de Pilhas. Pilhas. Pilhas. Implementação Seqüencial X Encadeada. SCE 182 Algoritmos e Estruturas de Dados I

Programação Orientada a Objetos (utilizando C#) Professor Emiliano S. Monteiro Versão 20 Jan/2017.

Instituto Luterano de Ensino Superior de Ji-Paraná Curso Bacharelado em Informática Estrutura de Dados I Prof.: José Luiz A.

ESTRUTURAS DE DADOS E ALGORITMOS II ANTONIO RAMOS DE CARVALHO JÚNIOR PILHAS

Algoritmos e Estruturas de Dados I PILHAS. Prof. Tiago Eugenio de Melo

INF 1620 P2-23/10/04 Questão 1 Nome:

4. Listas, Pilhas, e Filas

4. Listas, Pilhas, e Filas

Filas. Nesta aula veremos o ADT fila Em um computador existem muitas filas esperando pela impressora, acesso ao disco ou, num sistema timesharing,

SCC 202 Algoritmos e Estruturas de Dados I. Pilhas (Stacks) (implementação dinâmica)

Lista de Exercícios sobre Listas Implementadas por Encadeamento

Estruturas de Dados em C++ Conceitos. Leandro Tonietto jun-09

PCS3111. Laboratório de Programação Orientada a Objetos para Engenharia Elétrica. Aula 11: Exercício Integrador (parte 2)

Pilhas e Filas. Algoritmos e Estruturas de Dados Flavio Figueiredo (

Princípios de programação em Linguagem C++

Universidade Federal do Espírito Santo Centro de Ciências Agrárias CCA UFES Departamento de Computação. Ordenação

PCC104 - Projeto e Análise de Algoritmos

PCS3111. Laboratório de Programação Orientada a Objetos para Engenharia Elétrica. Aula 10: Exercício Integrador (parte 1)

INF Estruturas de dados avançadas. Implementando iteradores

Programação C# + ASP.NET

Pilhas. Profa Morganna Diniz

CAP-241 Computação Aplicada I Dica: Standard Template Library (STL) Parte I - Containers Dr. Gilberto Ribeiro de Queiroz

Fila. 26 e 31/8/2008 Representação/Implementação: Seqüencial estática Encadeada dinâmica Exercícios/Aplicações

CES-11. Pilhas Definição Operações Filas. Operações Deques. Definição. Operações

Tipo de Dados Abstractos: Pilha (stack)

Pilha. SCC Algoritmos e Estruturas de Dados I. Prof. Fernando V. Paulovich. *Baseado no material do Prof. Gustavo Batista

Apresentação da Disciplina

Listas. Aula 01. DPEE 1038 Estrutura de Dados para Automação Curso de Engenharia de Controle e Automação Universidade Federal de Santa Maria

REVISÃO DE PILHAS E FILAS. Vanessa Braganholo Estruturas de Dados e Seus Algoritmos

Universidade de São Paulo

Apresentação da Disciplina

A Pilha. Aula 02. DPEE 1038 Estrutura de Dados para Automação Curso de Engenharia de Controle e Automação Universidade Federal de Santa Maria

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

Vectores em C++ Classe vector: Introdução

Algoritmos e Estruturas de Dados 2005/2006

CAP-241 Computação Aplicada I Aula 5 Estruturas de Dados Elementares Parte I Arranjos, Listas, Pilhas e Filas. Dr. Gilberto Ribeiro de Queiroz

Lista de Exercícios 04

Filas. Aula 02. DPEE 1038 Estrutura de Dados para Automação Curso de Engenharia de Controle e Automação Universidade Federal de Santa Maria

Estrutura de dados - Listas Encadeadas

Prof. Marco Antonio M. Carvalho

Aula de hoje. Listas. Sequências especiais. Introdução. Listas. Sequências. SCC Introdução à Programação para Engenharias

Pilhas e Filas. Conteúdo. FEUP/LEEC Algoritmos e Estruturas de Dados 2001/2002. João Canas Ferreira

Templates. BCC Programação Orientada a Objectos(POO) Departamento de Computação - UFOP

Ficha de Revisões para as aulas

Pilhas e Filas Encadeadas. Algoritmos e Estruturas de Dados I

Pilha. SCC-202 Algoritmos e Estruturas de Dados I. Lucas Antiqueira

Tabelas de dispersão

Pilhas e Filas. Nádia Félix e Hebert Coelho

Aula 11 Pilha Dinâmica. prof Leticia Winkler


Tipos e Estruturas de Dados Profa. Graça Nunes Lista de Exercícios (Listas Encadeadas, Duplamente Encadeadas e Circulares)

Transcrição:

Estruturas de Dados - STL Baseada na apresentação do prof. João Bittencourt Leandro Tonietto ltonietto@unisinos.br Algoritmos e Estruturas de Dados em C++ Unisinos http://www.inf.unisinos.br/~ltonietto/jed/aed/estruturadados-stl.pdf mai-09

STL - Standard Template Library Biblioteca Padrão de Gabaritos de C++ Desenvolvida por Alexander Stepanov e Meng Lee na HP. Tornou-se padrão no C++ Possui uma série de estruturas de dados, iteradores e algoritmos padrões. Evita-se reinventar a roda O programador pode apropriar-se das classes da STL para criar seus sistemas 6-mai-09 Leandro Tonieto 2

Pilhas com STL: Incluir biblioteca stack: #include <stack> Usar classe stack com tipo de pilha a ser utilizado (esquema de templates): stack<int> pilha; stack<movimento> undo; stack<movimento> redo; 6-mai-09 Leandro Tonieto 3

Pilhas com STL, métodos: Inserir um elemento no topo da pilha push() Remover elemento do topo pop() Não retorna o elemento removido Obter elemento no topo da pilha top() Retorna o elemento sem removê-lo Verifica se a pilha está vazia empty() Tamanho atual da pilha size() :: exemplo :: 6-mai-09 Leandro Tonieto 4

Exercício com stack: Estruturas de dados - STL Faça o exercício de palíndromo utilizando pilhas da STL (stack). O programa deve solicitar a digitação de uma frase por parte do usuário e verificar se a palavra é um palíndromo. 6-mai-09 Leandro Tonieto 5

Filas com STL: Incluir biblioteca queue: #include <queue> Estruturas de dados - STL Usar classe queue com tipo de fila a ser utilizado (esquema de templates): queue<int> fila; 6-mai-09 Leandro Tonieto 6

Filas com STL, métodos: Inserir um elemento no final da fila push() Remover elemento da fila pop() Não retorna o elemento removido Obter elemento na frente da fila front() Retorna o elemento sem removê-lo Verifica se a fila está vazia empty() Tamanho atual da fila size() :: exemplo :: 6-mai-09 Leandro Tonieto 7

Filas com prioridade (PRIQ) com STL: Incluir biblioteca queue: #include <queue> Usar classe priority_queue com tipo de fila a ser utilizado (esquema de templates): priority_queue<int> fila; 6-mai-09 Leandro Tonieto 8

Filas com prioridade com STL, métodos: Inserir um elemento na posição adequada da fila push() Remover elemento de maior prioridade da fila pop() Não retorna o elemento removido Obter elemento de maior prioridade na fila top() Retorna o elemento sem removê-lo Verifica se a fila está vazia empty() Tamanho atual da fila size() :: exemplo :: 6-mai-09 Leandro Tonieto 9

Filas com prioridade com STL, métodos: Inserir um elemento na posição adequada da fila push() Remover elemento de maior prioridade da fila pop() Não retorna o elemento removido Obter elemento de maior prioridade na fila top() Retorna o elemento sem removê-lo Verifica se a fila está vazia empty() Tamanho atual da fila size() :: exemplo :: 6-mai-09 Leandro Tonieto 10

Exercício com prority_queue: Criar classe Mensagem com atributos texto e prioridade e com sobrecarga do operador <, onde uma mensagem é < que outra a prioridade dela é menor que da outra: friend bool operator<(const Mensagem &uma, const Mensagem &outra){... } No main, criar uma fila com prioridades de mensagens, ler diversas mensagens e prioridades e adicionar na fila. Imprimir todos os elementos da fila. 6-mai-09 Leandro Tonieto 11

Iteradores: Recurso poderoso da STL Criar uma interdependência da estrutura de dados e a forma de percorrê-la. Pilhas (stack) e filas (queue) não oferecem iteradores. Se oferecessem iriam corromper o conceito dessas estruturas. Conceitos fundamentais da STL Containers Iterators 6-mai-09 Leandro Tonieto 12

Tipos de Iteradores Entrada ler um elemento do container. Do início para o fim, um elemento de cada vez. Saida - escrever um elemento no container. Do início para o fim, um elemento de cada vez. Para frente combina os iteradores de entrada e saída. Mantém o estado atual. Bidirecional igual o para frente também podendo percorrer o container para trás. Aleatório o mesmo que o bidirecional podendo avançar ou recuar mais de uma posição 6-mai-09 Leandro Tonieto 13

Operações com Iteradores (acumulativos) Todos ++p (pré-incrementa,avança) p++ (pós-incrementa,avança) Entrada *p (pegar o valor apontado por p) p = p1 p == p1 p!= p1 6-mai-09 Leandro Tonieto 14

Operações com Iteradores (acumulativos) Saída *p p = p1 Para frente Todas as operações de entrada e saída Bidirecional --p (pré-decrementa,recua) p-- (pós-decrementa,recua) 6-mai-09 Leandro Tonieto 15

Operações com Iteradores (acumulativos) Aleatório p+=i incrementa p em i posições p-=i decrementa p em i posições p[i] o elemento que está na posição i p<p1 se p está antes de p1 no container p<=p1 se p está antes ou no mesmo lugar que p1 no container p>p1 se p está depois de p1 no container p>=p1 se p está depois ou no mesmo lugar que p1 no container 6-mai-09 Leandro Tonieto 16

Como obter um iterador? list<tipo>::iterator i; i = lista.begin(); Pode ser usado: begin() - primeiro elemento end() - um ponteiro sujo que indica o próximo elemento (depois do fim) Exemplo: for(list<tipo>::iterator it=lista.begin(); it!=lista.end(); it++){ // faz alguma coisa } 6-mai-09 Leandro Tonieto 17

Listas com STL: Incluir biblioteca list: #include <list> Usar classe list com tipo de lista a ser utilizado (esquema de templates): list<int> lista; list<mensagem> listamensagens; 6-mai-09 Leandro Tonieto 18

Listas com STL, métodos: Inserir um elemento na lista push_front() - insere no início push_back() - insere no fim Remover elemento da lista pop_front() pop_back() Obter um elemento da lista :: exemplo :: front() ou back() Verifica se a lista está vazia empty() Tamanho atual da lista -size() 6-mai-09 Leandro Tonieto 19

Listas com STL, métodos: splice(posicao,outralista) Remove os elementos da outralista e coloca-os antes da posicao remove (valor) Remove todos os elementos=valor da lista unique Remove elementos duplicados merge (outralista) Fusão entre duas listas sem repetição 6-mai-09 Leandro Tonieto 20

Listas com STL, métodos: reverse() Inverte a lista sort() Ordena a lista em ordem ascendente clear() Remove todos os elementos da lista insert(iterador, valor) Inclui um valor na posição de um iterador. Retorna um novo iterador erase(iterador) Apaga o valor apontado pelo iterador 6-mai-09 Leandro Tonieto 21

Exercício com list: Criar classe Animal com atributos tipo e nome e com sobrecarga do operador <, onde um animal é < que outro quando o tipo de um é menor que outro e o nome de um é menor que outro. No main, criar duas listas (uma de cachorros e outra de gatos) e preencher com objetos do tipo animal. Fazer o merge das duas listas e imprimir. Fazer o sort das duas listas e imprimir. Inverter a lista e imprimir. 6-mai-09 Leandro Tonieto 22