Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Industrial programming >> Linguagem C

Mapa na biblioteca de modelos padrão C++ (STL) com exemplo de impressão

O que é std::map?


Em C++, um MAP é um contêiner associativo que armazena itens em um formulário mapeado. Cada item no mapa é composto por um valor-chave e um valor mapeado. Dois valores mapeados não podem compartilhar os mesmos valores de chave.

Os valores-chave são bons para classificar e identificar elementos de forma exclusiva. Os valores mapeados são para armazenar o 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 ambos.

Neste tutorial de C++, você aprenderá:

Por que usar std::map?


Aqui estão as razões para usar o mapa:

Sintaxe:


Para declarar std::map, use esta sintaxe:
std::map<key_datatype, value_datatype>map_name; 

Por exemplo:
map<string, int> my_map; 

Declaramos um mapa chamado my_map. O mapa terá uma string como chave tipos de dados e inteiros como valores tipo de dados.

Tipos de membros:


As funções de membro podem usar os seguintes tipos de membros como parâmetros ou tipo de retorno:

Funções incorporadas


std::map vem com funções embutidas. Alguns deles incluem:

Iteração sobre elementos do mapa


Você pode iterar sobre os elementos do mapa. Nós simplesmente precisamos criar um iterador e usá-lo para isso.
Por exemplo:

Exemplo 1:

#include <iostream>
#include <string>
#include <map> 

using namespace std;
int main() {

	map<int, string> Students;

	Students.insert(std::pair<int, string>(200, "Alice"));

	Students.insert(std::pair<int, string>(201, "John"));

	cout << "Map size is: " << Students.size() << endl;

	cout << endl << "Default map Order is: " << endl;

	for (map<int, string>::iterator it = Students.begin(); it != Students.end(); ++it) {

		cout << (*it).first << ": " << (*it).second << endl;
	}
}

Saída:



Aqui está uma captura de tela do código:



Explicação do código:

  1. Inclua o arquivo de cabeçalho iostream em nosso código para usar suas funções.
  2. Inclua o arquivo de cabeçalho de string em nosso código para usar suas funções.
  3. Inclua o arquivo de cabeçalho do mapa em nosso código para usar suas funções.
  4. Inclua o namespace std em nosso código para usar suas classes sem chamá-lo.
  5. Chame a função main(). O { marca o início do corpo da função.
  6. Crie um mapa chamado Alunos onde as chaves serão números inteiros e os valores serão strings.
  7. Insira valores no mapa Alunos. Uma chave de 200 e um valor de Alice serão inseridos no mapa.
  8. Insira valores no mapa Alunos. Uma chave de 201 e um valor de John serão inseridos no mapa.
  9. Use a função size() para obter o tamanho do mapa chamado Alunos. Isso deve retornar um 2.
  10. Imprima algum texto no console.
  11. Use um loop for para criar um iterador nomeado para iterar sobre os elementos do mapa chamados Alunos.
  12. Imprima os valores do mapa Alunos no console.
  13. Fim do corpo do loop for.
  14. 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.

Então, ele primeiro verifica se cada chave está presente no mapa. Se estiver presente, a entrada não será inserida, mas retornará o iterador da entrada existente. Se não estiver presente, a entrada é inserida.

A função tem as seguintes variações:

O inserir_ou_assing() A função funciona da mesma forma que a função insert(), mas se a chave fornecida já existir no mapa, seu valor será modificado.

Exemplo 2:

#include <map>
#include <iostream>

using namespace std;

int main() {

	map<int, int> m{ {1,3} , {2,4} , {3,5} };

	m.insert({ 5, 6 });
	m.insert({ 1, 8 });

	m.insert_or_assign(1, 6);  
	
	cout << "Key\tElement\n";
	for (auto itr = m.begin(); itr != m.end(); ++itr) {
		cout << itr->first << '\t' << itr->second << '\n';
	}
	return 0;
}

Saída:



Aqui está uma captura de tela do código:



Explicação do código:

  1. Inclua o arquivo de cabeçalho do mapa em nosso código para usar suas funções.
  2. Inclua o arquivo de cabeçalho iostream em nosso código para usar suas funções.
  3. Inclua o namespace std em nosso código para usar suas classes sem chamá-lo.
  4. Chame a função main(). O { marca o início do corpo da função.
  5. Crie um mapa chamado m onde as chaves serão números inteiros e os valores serão números inteiros. Três entradas foram feitas no mapa.
  6. Insira uma nova entrada no mapa m. Uma chave de 5 e um valor de 6 serão inseridos no mapa.
  7. Tentando fazer uma entrada em uma chave já existente. Como a chave 1 já existe no mapa, a entrada não será feita.
  8. 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.
  9. 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.
  10. Use um loop for para criar um iterador chamado itr para iterar sobre os elementos do mapa chamado m.
  11. Imprima os valores do mapa m no console. O caractere “\t” cria um espaço horizontal entre cada chave e seu valor correspondente. Por outro lado, o caractere “\n” move o cursor do mouse para a próxima linha após cada iteração.
  12. Fim do corpo do for a loop.
  13. O programa deve retornar o valor após a conclusão bem-sucedida.
  14. Fim do corpo da função main().

Pesquisando em um mapa


Podemos usar a função find() para procurar elementos em um mapa por suas chaves. Se a chave não for encontrada, a função retornará std::map::end. Caso contrário, um iterador do elemento pesquisado será retornado.

Exemplo 2:

#include <iostream>
#include <string>
#include <map> 
using namespace std;
int main() {
	map<int, string> Students;
	Students.insert(std::pair<int, string>(200, "Alice"));
	Students.insert(std::pair<int, string>(201, "John"));
	std::map<int, string>::iterator it = Students.find(201);
	if (it != Students.end()) {
		std::cout << endl << "Key 201 has the value: => "<< Students.find(201)->second << '\n';
	}
}

Saída:



Aqui está uma captura de tela do código:



Explicação do código:

  1. Inclua o arquivo de cabeçalho iostream em nosso código para usar suas funções sem erros.
  2. Inclua o arquivo de cabeçalho de string em nosso código para usar suas funções sem obter erros.
  3. Inclua o arquivo de cabeçalho do mapa em nosso código para usar suas funções sem erros.
  4. Inclua o namespace std em nosso código para usar suas classes sem chamá-lo.
  5. Chame a função main(). O { marca o início do corpo da função main().
  6. Crie um mapa chamado Alunos cujas chaves serão números inteiros e strings de valores.
  7. Insira valores no mapa Alunos. Uma chave de 200 e um valor de Alice serão inseridos no mapa.
  8. Insira valores no mapa Alunos. Uma chave de 201 e um valor de John serão inseridos no mapa.
  9. Procure o valor associado a uma chave de 201.
  10. Use uma instrução if para verificar se o valor da chave foi encontrado.
  11. Imprima o valor da chave junto com algum texto no console.
  12. Fim do corpo da instrução if.
  13. Fim do corpo da função main().

Exclusão de dados de um mapa


Podemos usar a função erase() para excluir 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 <iostream>
#include <string>
#include <map>

using namespace std;
int main() {

	map<std::string, int> my_map;

	my_map.insert(std::make_pair("cow", 1));

	my_map.insert(std::make_pair("cat", 2));

	my_map["lion"] = 3;

	map<std::string, int>::iterator it = my_map.find("cat");

	my_map.erase(it);

	for (map<string, int>::iterator it = my_map.begin(); it != my_map.end(); ++it)

		cout << (*it).first << ": " << (*it).second << endl;

  return 0;
}

Saída:



Aqui está uma captura de tela do código:



Explicação do código:

  1. Inclua o arquivo de cabeçalho iostream em nosso código para usar suas funções.
  2. Inclua o arquivo de cabeçalho de string em nosso código para usar suas funções.
  3. Inclua o arquivo de cabeçalho do mapa em nosso código para usar suas funções.
  4. Inclua o namespace std em nosso código para usar suas classes sem chamá-lo.
  5. Chame a função main(). O { marca o início do corpo da função main().
  6. Crie um mapa chamado my_map cujas chaves serão strings e valores inteiros.
  7. Insira valores no mapa my_map. Uma chave de Vaca e um valor de 1 serão inseridos no mapa.
  8. Insira valores no mapa my_map. Uma chave de Cat e um valor de 2 serão inseridos no mapa.
  9. Adicione um valor 3 no mapa my_map com a chave de um leão.
  10. Crie um iterador para iterar no mapa my_map procurando o cat-chave.
  11. Exclua o elemento apontado pelo iterador.
  12. Use um iterador para iterar sobre os elementos do mapa my_map do início ao fim.
  13. Imprima o conteúdo do mapa my_map no console.
  14. O programa deve retornar a saída após a conclusão bem-sucedida.
  15. Fim do corpo da função main().

Resumo:


Linguagem C

  1. C Funções da Biblioteca Padrão
  2. Operadores em C++ com Exemplo:O que é, Tipos e Programas
  3. C++ do… while loop com exemplos
  4. Instrução C++ Switch Case com EXEMPLO
  5. Alocação dinâmica de matrizes em C++ com exemplo
  6. Ponteiros C++ com exemplos
  7. Sobrecarga do operador C++ com exemplos
  8. std::list em C++ com exemplo
  9. Funções C++ com exemplos de programas
  10. Diferença entre estrutura e classe:explicada com exemplo de C++