Explorando a STL - Aula 6 - Map

Escrito por Lúcio Figueiredo e Anita Almeida

O map (ou mapa) é uma estrutura de dados da STL do C++ semelhante ao Set. A função do map é de guardar pares representados por uma chave e um valor. Ou seja, cada chave inserida será mapeada para um certo valor especificado. Como um exemplo, podemos possuir um map que recebe strings como chaves e inteiros como valores, associando, por exemplo, a diferentes nomes de pessoas as suas respectivas idades.

Declaração

Para declarar um map, é preciso usar a biblioteca <map>. Após isso, especificamos o tipo dos elementos usados como chave e o tipo dos valores que serão mapeados para cada chave.

Inserção de elementos

Há duas maneiras de se inserir um par {chave, valor} no map. A primeira utiliza uma ideia semelhante ao pair e a segunda uma ideia semelhante à atribuição de um valor a uma determinada posição de um vetor. Em ambas as formas, a complexidade da inserção é de O(\log_{} N).

Busca de elementos

Para saber se uma certa chave foi inserida no map, podemos usar o comando find. Caso a chave não tenha sido inserida, esta função retorna um ponteiro para o final do map, que pode ser acessado com o comando end. Novamente, a complexidade desta operação é de O(\log_{} N).

Remoção de um elemento

Para remover uma chave do map, basta utilizar o comando erase e especificar a chave desejada. A complexidade de remover uma chave é O(\log_{} N).

Percorrer um map

Ainda é possível percorrer um map, iterando por todas as chaves existentes na estrutura. Para fazer isso, usaremos o mesmo processo para iterar um set: Usaremos um iterator que se localiza na posição inicial do map (obtido pelo comando begin) e irá navegar por todos os elementos no mapa até o seu fim (função end). Vale lembrar que os pares (chave, valor) presentes no map são mantidos de forma ordenada (por padrão, crescentemente) pelo mesmo comparador do tipo pair.

Lista completa de funções

O map possui outras funções úteis que são muito utilizadas. Para conferí-las, basta acessar o link da referência do C++.

Problemas para praticar

Problema 1 - Lecture

Problema 2 - Inscrições

Problema 3 - Times