O que é std :: map?
Em C ++, um MAP é um contêiner associativo que armazena itens em uma forma mapeada. Cada item no mapa é composto de um valor-chave e um valor mapeado. Dois valores mapeados não podem compartilhar os mesmos valores-chave.
Os valores-chave são bons para classificar e identificar elementos de maneira única. Os valores mapeados são para armazenar conteúdo associado à chave. Os dois podem diferir em tipos, mas o tipo de membro os combina por meio de um tipo de par que combina os dois.
Neste tutorial C ++, você aprenderá:
- O que é std :: map?
- Por que usar std :: map?
- Sintaxe:
- Tipos de membros:
- Funções integradas
- Iterando sobre os elementos do mapa
- Inserindo dados em std :: map:
- Pesquisando em um mapa
- Exclusão de dados de um mapa
Por que usar std :: map?
Aqui, estão as razões para usar o mapa:
- std :: map armazena chaves exclusivas apenas em ordem de classificação com base nos critérios de classificação escolhidos.
- É fácil e rápido pesquisar elementos usando a tecla.
- Apenas um elemento é anexado a cada chave.
- std :: map pode ser usado como uma matriz associativa.
- std :: map é implementável usando árvores binárias (balanceadas).
Sintaxe:
Para declarar std :: map, use esta sintaxe:
std::mapmap_name;
- O key_datatype denota o tipo de dados das chaves do mapa.
- O value_datatype denota o tipo de dados dos valores correspondentes às chaves do mapa.
- O map_name é o nome do mapa.
Por exemplo:
mapmy_map;
Declaramos um mapa chamado my_map. O mapa terá uma string como tipos de dados chave e um inteiro como tipo de dados de valores .
Tipos de membros:
As funções de membro podem usar os seguintes tipos de membros como parâmetros ou tipo de retorno:
- key_type: Key (o primeiro parâmetro no modelo)
- mapped_type: T (O segundo parâmetro no modelo)
- key_compare: Compare (o terceiro parâmetro no modelo)
- alocator_type: Alloc (o quarto parâmetro no modelo)
- value_type: pair
- value_compare: classe de função aninhada para comparar elementos
- referência: alocator_type :: referência
- const_reference: allocator_type :: const_reference
- ponteiro: alocator_type :: ponteiro
- const_pointer: allocator_type :: const_pointer
- iterador: um iterador bidirecional para o value_type
- const_iterator: um iterador bidirecional para const value_type
- reverse_iterator: um iterador reverso
- const_reverse_iterator: um iterador reverso constante
- diferença_tipo: ptrdiff_t
- size_type: size_t
Funções integradas
std :: map vem com funções embutidas. Alguns deles incluem:
- begin () - Esta função retorna o iterador para o primeiro item do mapa.
- size () - Esta função retorna o número de itens em um mapa.
- empty () - Esta função retorna um valor booleano indicando se um mapa está vazio.
- insert (pair (key, value)) - Esta função insere um novo par de valores-chave em um mapa.
- find (val) - Esta função fornece o iterador para o elemento val se ele for encontrado. Caso contrário, ele retornará m.end ().
- Apagar (posição do iterador) - Esta função exclui o item na posição apontada pelo iterador.
- erase (const g) - Esta função exclui o valor-chave g de um mapa.
- Clear () - Esta função exclui todos os itens de um mapa.
Iterando sobre os elementos do mapa
Você pode iterar sobre os elementos do mapa. Simplesmente precisamos criar um iterador e usá-lo para isso. Por exemplo:
Exemplo 1:
#include#include #include
Resultado:
Aqui está uma captura de tela do código:
Explicação do código:
- Inclua o arquivo de cabeçalho iostream em nosso código para usar suas funções.
- Inclua o arquivo de cabeçalho de string em nosso código para usar suas funções.
- Inclua o arquivo de cabeçalho do mapa em nosso código para usar suas funções.
- Inclua o namespace std em nosso código para usar suas classes sem chamá-lo.
- Chame a função main (). O {marca o início do corpo da função.
- Crie um mapa chamado Students onde as chaves serão inteiros e os valores serão strings.
- Insere valores no mapa de Alunos. Uma chave de 200 e um valor de Alice serão inseridos no mapa.
- Insere valores no mapa de Alunos. Uma chave de 201 e um valor de John serão inseridos no mapa.
- Use a função size () para obter o tamanho do mapa denominado Alunos. Isso deve retornar um 2.
- Imprima algum texto no console.
- Use um loop for para criar um iterador denominado para iterar sobre os elementos do mapa denominado Students.
- Imprime os valores do mapa Alunos no console.
- Fim do corpo do loop for.
- Fim do corpo da função main ().
Inserindo dados em std :: map
Você pode inserir itens em std :: map usando a função insert (). Lembre-se de que as chaves std :: map devem ser exclusivas.
Portanto, ele primeiro verifica se cada chave está presente no mapa. Se estiver presente, a entrada não será inserida, mas retorna o iterador da entrada existente. Se não estiver presente, a entrada é inserida.
A função tem as seguintes variações:
- insert (pair) - com esta variação, um par de valores-chave é inserido no mapa.
- insert (start_itr, end_itr) - com esta variação, as entradas serão inseridas dentro do intervalo definido por start_itr e end_itr de outro mapa.
A função insert_or_assing () funciona da mesma maneira que a função insert (), mas se a chave fornecida já existir no mapa, seu valor será modificado.
Exemplo 2:
#include
Resultado:
Aqui está uma captura de tela do código:
Explicação do código:
- Inclua o arquivo de cabeçalho do mapa em nosso código para usar suas funções.
- Inclua o arquivo de cabeçalho iostream em nosso código para usar suas funções.
- Inclua o namespace std em nosso código para usar suas classes sem chamá-lo.
- Chame a função main (). O {marca o início do corpo da função.
- Crie um mapa denominado m onde as chaves serão inteiros e os valores serão inteiros. Três entradas foram feitas no mapa.
- Insira uma nova entrada no mapa m. Uma chave de 5 e um valor de 6 serão inseridos no mapa.
- Tentando fazer uma entrada em uma chave já existente. Como a chave 1 já existe no mapa, a entrada não será feita.
- Usando a função insert_or_assign () para inserir ou modificar uma entrada existente. Como a chave 1 já existe, seu valor será alterado para 6.
- Imprima algum texto no console. O caractere "\ t" cria um espaço horizontal enquanto o caractere "\ n" move o cursor do mouse para a próxima linha.
- Use um loop for para criar um iterador denominado itr para iterar sobre os elementos do mapa denominado m.
- Imprima os valores do mapa m no console. O caractere "\ t" cria um espaço horizontal entre cada chave e seu valor correspondente. Em contraste, o caractere "\ n" move o cursor do mouse para a próxima linha após cada iteração.
- Fim do corpo do loop for.
- O programa deve retornar um valor após a conclusão bem-sucedida.
- Fim do corpo da função main ().
Pesquisando em um mapa
Podemos usar a função find () para pesquisar elementos em um mapa por meio de suas teclas. Se a chave não for encontrada, a função retorna std :: map :: end. Caso contrário, um iterador do elemento pesquisado será retornado.
Exemplo 2:
#include#include #include
Resultado:
Aqui está uma captura de tela do código:
Explicação do código:
- Inclua o arquivo de cabeçalho iostream em nosso código para usar suas funções sem obter erros.
- Inclua o arquivo de cabeçalho de string em nosso código para usar suas funções sem obter erros.
- Inclua o arquivo de cabeçalho do mapa em nosso código para usar suas funções sem obter erros.
- Inclua o namespace std em nosso código para usar suas classes sem chamá-lo.
- Chame a função main (). O {marca o início do corpo da função main ().
- Crie um mapa chamado Alunos cujas chaves serão inteiros e cadeias de valores.
- Insere valores no mapa de Alunos. Uma chave de 200 e um valor de Alice serão inseridos no mapa.
- Insere valores no mapa de Alunos. Uma chave de 201 e um valor de John serão inseridos no mapa.
- Procure o valor associado a uma chave de 201.
- Use uma instrução if para verificar se o valor da chave foi encontrado.
- Imprima o valor da chave ao lado de algum texto no console.
- Fim do corpo da instrução if.
- Fim do corpo da função main ().
Exclusão de dados de um mapa
Podemos usar a função erase () para deletar um valor de um mapa. Simplesmente criamos um iterador que aponta para o elemento a ser excluído. O iterador é então passado para a função erase ().
Exemplo 3:
#include#include #include
Resultado:
Aqui está uma captura de tela do código:
Explicação do código:
- Inclua o arquivo de cabeçalho iostream em nosso código para usar suas funções.
- Inclua o arquivo de cabeçalho de string em nosso código para usar suas funções.
- Inclua o arquivo de cabeçalho do mapa em nosso código para usar suas funções.
- Inclua o namespace std em nosso código para usar suas classes sem chamá-lo.
- Chame a função main (). O {marca o início do corpo da função main ().
- Crie um mapa denominado my_map cujas chaves serão strings e valores inteiros.
- Insira valores no mapa my_map. Uma chave de vaca e um valor de 1 serão inseridos no mapa.
- Insira valores no mapa my_map. Uma chave Cat e um valor 2 serão inseridos no mapa.
- Adicione um valor 3 no mapa my_map com a chave de um leão.
- Crie um iterador para iterar sobre o mapa my_map procurando pelo gato-chave.
- Exclua o elemento apontado pelo iterador.
- Use um iterador para iterar sobre os elementos do mapa my_map do início ao fim.
- Imprima o conteúdo do mapa my_map no console.
- O programa deve retornar a saída após a conclusão bem-sucedida.
- Fim do corpo da função main ().
Resumo:
- Um mapa é um contêiner associativo que armazena itens em um formulário mapeado.
- Cada item no mapa possui um valor-chave e um valor mapeado.
- Em um mapa, dois valores mapeados não podem compartilhar valores-chave.
- Os valores-chave ajudam na classificação e identificação de elementos de forma única.
- Os valores mapeados ajudam no armazenamento de conteúdo associado à chave.
- O mapa C ++ armazena chaves exclusivas em ordem classificada.
- Para trabalhar com o mapa C ++, criamos um iterador para iterar sobre os elementos.
- Com o iterador, podemos realizar tarefas como pesquisar e excluir itens do mapa.