Os mapas fazem parte da C++ STL (Standard Template Library). Mapas são os contêineres associativos que armazenam pares chave-valor ordenados, nos quais cada chave é única e pode ser inserida ou excluída, mas não pode ser alterada. Os valores associados às chaves podem ser alterados.
Por exemplo: Um mapa de Funcionários onde o ID do funcionário é a chave e o nome é o valor pode ser representado como:
| Chaves | Valores |
|---|---|
| 101 | Nikita |
| 102 | Robin |
| 103 | Profundo |
| 104 | John |
Sintaxe
template <class key, map::key_type class t, map::mapped_type compare="less," map::key_compare alloc="allocator<pair"> // map::allocator_type > class map; </class>
Parâmetro
chave: O tipo de dados chave a ser armazenado no mapa.
tipo: O tipo de dados do valor a ser armazenado no mapa.
comparar: Uma classe de comparação que recebe dois argumentos do mesmo tipo bool e retorna um valor. Este argumento é opcional e o predicado binário less é o valor padrão.
alocar: Tipo do objeto alocador. Este argumento é opcional e o valor padrão é allocator .
iterando uma lista em java
Criando um mapa
Os mapas podem ser facilmente criados usando a seguinte instrução:
typedef pair value_type;
O formulário acima será usado para criar um mapa com chave do tipo Tipo de chave e valor do tipo tipo de valor. Uma coisa importante é que a chave de um mapa e os valores correspondentes são sempre inseridos como um par, você não pode inserir apenas uma chave ou apenas um valor em um mapa.
Exemplo 1
#include #include #include #include using namespace std; int main() { map Employees; // 1) Assignment using array index notation Employees[101] = 'Nikita'; Employees[105] = 'John'; Employees[103] = 'Dolly'; Employees[104] = 'Deep'; Employees[102] = 'Aman'; cout << 'Employees[104]=' << Employees[104] << endl << endl; cout << 'Map size: ' << Employees.size() << endl; cout << endl << 'Natural Order:' << endl; for( map::iterator ii=Employees.begin(); ii!=Employees.end(); ++ii) { cout << (*ii).first << ': ' << (*ii).second << endl; } cout << endl << 'Reverse Order:' << endl; for( map::reverse_iterator ii=Employees.rbegin(); ii!=Employees.rend(); ++ii) { cout << (*ii).first << ': ' << (*ii).second << endl; } } Saída:
Employees[104]=Deep Map size: 5 Natural Order: 101: Nikita 102: Aman 103: Dolly 104: Deep 105: John Reverse Order: 105: John 104: Deep 103: Dolly 102: Aman 101: Nikita
Funções de membro
Abaixo está a lista de todas as funções-membro do mapa:
Construtor/Destruidor
| Funções | Descrição |
|---|---|
| construtores | Construir mapa |
| destruidores | Destruidor de mapa |
| operador = | Copie elementos do mapa para outro mapa. |
Iteradores
| Funções | Descrição |
|---|---|
| começar | Retorna um iterador apontando para o primeiro elemento do mapa. |
| começar | Retorna um iterador const apontando para o primeiro elemento no mapa. |
| fim | Retorna um iterador apontando para o passado. |
| um pouco | Retorna um iterador constante apontando para o passado. |
| começar | Retorna um iterador reverso apontando para o fim. |
| faz | Retorna um iterador reverso apontando para o início. |
| crbegin | Retorna um iterador reverso constante apontando para o fim. |
| acreditar | Retorna um iterador reverso constante apontando para o início. |
Capacidade
| Funções | Descrição |
|---|---|
| vazio | Retorna verdadeiro se o mapa estiver vazio. |
| tamanho | Retorna o número de elementos no mapa. |
| tamanho máximo | Retorna o tamanho máximo do mapa. |
Acesso ao Elemento
| Funções | Descrição |
|---|---|
| operador[] | Recuperar o elemento com determinada chave. |
| no | Recuperar o elemento com determinada chave. |
Modificadores
| Funções | Descrição |
|---|---|
| inserir | Inserir elemento no mapa. |
| apagar | Apague elementos do mapa. |
| trocar | Troque o conteúdo do mapa. |
| claro | Exclua todos os elementos do mapa. |
| localização | Construa e insira os novos elementos no mapa. |
| emplace_hint | Construa e insira novos elementos no mapa por dica. |
Observadores
| Funções | Descrição |
|---|---|
| chave_comp | Retorne uma cópia do objeto de comparação chave. |
| valor_comp | Retorne uma cópia do objeto de comparação de valor. |
Operações
| Funções | Descrição |
|---|---|
| encontrar | Procure um elemento com determinada chave. |
| contar | Obtém o número de elementos correspondentes a determinada chave. |
| limite_inferior | Retorna um iterador para o limite inferior. |
| limite superior | Retorna um iterador para o limite superior. |
| intervalo_igual | Retorna o intervalo de elementos que corresponde a determinada chave. |
Alocador
| Funções | Descrição |
|---|---|
| get_allocator | Retorna um objeto alocador que é usado para construir o mapa. |
Funções sobrecarregadas de não membros
| Funções | Descrição |
|---|---|
| operador== | Verifica se os dois mapas são iguais ou não. |
| operador!= | Verifica se os dois mapas são iguais ou não. |
| operador< | Verifica se o primeiro mapa é menor que o outro ou não. |
| operador<=< td> | Verifica se o primeiro mapa é menor ou igual ao outro ou não. | =<>
| operador> | Verifica se o primeiro mapa é maior que o outro ou não. |
| operador>= | Verifica se o primeiro mapa é maior que igual ao outro ou não. |
| trocar() | Troca o elemento de dois mapas. |