terça-feira, 9 de outubro de 2012

[Programação em C++] Utilizando mapa - map

Olá pessoal, nesse post iremos ver um exemplo bem simples da utilização de mapas (map) em C++.

A classe map é uma classe da STL (Standard Template Library).

Um mapa associa uma chave a um valor. Exemplo: o CPF de uma pessoa poderia ser a chave, cada CPF está associado ao nome de uma pessoa, então o nome seria o valor. 

O mapa utiliza pelo menos dois parâmetros templates: o tipo da chave K e o tipo de dado T. Os templates permitem que funções e classes operem com tipos genéricos.

A utilização de mapas possui a complexidade O(log(n)) para pesquisa e inserção.

Veja o código abaixo que exemplifica o uso de mapa:
(clique na imagem para vê-la em tamanho maior)


Linha 7: declaração do contexto (namespace).

Linha 11: declaração do map. O primeiro parâmetro é o tipo da chave e o segundo é o tipo do valor. No nosso exemplo, ambos são do tipo string.

Linha 12: declaração das strings.

Linhas 14 a 17: saída e entrada de dados.

Linha 19: insiro no mapa a chave (CPF) com o valor (nome). Veja que utilizei a estrutura "pair". Trata-se de uma estrutura com dois elementos, utilizei ela porque logo mais eu irei utilizar o método "find" (linha 23) que retorna pares.

Linha 21: declaração do iterador (iterator).

Linha 23: procuro pela chave cpf.

Linhas 25 a 28: Se o iterador for diferente de um iterador para map::end, então é porque a chave foi encontrada. Nesse caso eu mostro o valor (nome) associado a essa chave utilizando "second" (linha 26) que me fornece o valor da chave. Caso contrário, imprimo uma mensagem na tela indicando que a chave (cpf) não foi encontrada!


Nenhum comentário: