Os mapas são uma espécie de containers associativos que armazenam elementos formados pela combinação de um valor fundamental e um valor mapeado. A estrutura de mapa está implementada na Standard Template Library (STL) na linguagem C++, para utilizar esta estrutura basta incluir a biblioteca map em seu código.
Em um mapa, a chave valor é geralmente usada para identificar o elemento, enquanto que o valor mapeado é alguma associação a esta chave. Os tipos das chaves e dos valores mapeados podem variar.
Um exemplo típico de um mapa é uma lista telefônica onde o nome é a chave e o número de telefone é o valor mapeado. Mais abaixo apresentaremos exemplos de utilização.
No âmbito da Maratona de Programação, o map é muito usado para mapear uma string para um número, um exemplo disso pode ser um grafo onde seus vértices são representados por nomes. Para resolver o problema deste exemplo citado, podemos mapear os nomes para números inteiros e assim usar os nossos bons e velhos códigos de grafos onde representamos vértices por valores inteiros.
Outro exemplo pode ser enxergar o Orkut como um grafo, onde cada usuário é um vértice. Se cada usuário estiver mapeado para um valor inteiro é muito mais fácil implementar os algoritmos de busca, por exemplo.
Para concluir podemos citar duas características principais do mapa:
- Chaves únicas: não existem duas chaves iguais no mapa. Para um recipiente semelhante associativo permitindo múltiplos elementos com chaves equivalentes, use Multimap.
- Cada elemento é composto de uma chave e um valor mapeado. Para elementos simples use set.
E para não ficarmos apenas na teoria segue um código em C++:
Exemplo de inserção e acesso utilizando o operador []
// Includes
#include "iostream" //Obs: o que está entre aspas deve estar entre '<' e '>'
#include "map"
#include "string"
using namespace std;
int main () {
map mymap; //Mapaeamento uma LETRA para uma STRING
mymap['a']="an element"; //mapeamento a para an element
mymap['b']="another element"; //mapeamento b para another element
mymap['c']=mymap['b']; //mapeamento c para another element também pois está pegando o valor de 'b' no mapa
cout << "mymap['a'] is " <<>
cout << "mymap['b'] is " <<>
cout << "mymap['c'] is " <<>
cout << "mymap['d'] is " <<>
cout << "mymap now contains " << (int) mymap.size() << " elements." <<>
}
Saída deste código:
mymap['a'] is an element
mymap['b'] is another element
mymap['c'] is another element
mymap['d'] is
mymap now contains 4 elements.
Obs: 'd' não foi mapeado, por esse motivo não aparece nada escrito após o seu 'is' na saída do código.
Não deixe de conferir como utilizar o set!
Referência: cplusplus.com
ads
[ 17/05/2009 ]
0
Mapa (map da STL)
Não encontrou o que buscava? |
![]()
Pesquisa personalizada
|
![]() |
Assine nosso Feed e fique sempre ligado no ALLgoritmos! |
Postado por
Filipe Névola
às
20:02
Marcadores: programação, utilidades
technorati: programação, utilidades
Mais artigos
