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. |