Como utilizar std::map em C++

A STL é rica em disposições de tipo de conteúdo.


Como utilizar std::map em C++

std::map

São contêineres associativos que armazenam elementos de forma mapeada. Cada elemento possui um valor-chave e um valor mapeado.

Estrutura: std::map<Key,T,Compare,Allocator>

Para usar std::map

#include <map>

Declarando o std::map, a chave será do tipo const char* e o valor std::string:

std::map<const char*, std::string> mapa;

Atribuindo valores as chaves

mapa["Marcos"] = "Oliveira";
mapa["Terminal"] = "Root";

Podemos duplicar as chaves, mas o valor agora será ‘Root’

mapa["Terminal"] = "Root";
mapa["Terminal"] = "User";

Imprimindo os valores

std::cout << mapa["Marcos"] << '\n';
std::cout << mapa["Terminal"] << '\n';

Obter o tamanho do mapa

std::cout << mapa["Terminal"].size() << '\n';

Se quiser imprimir letras separadas:

std::cout << mapa["Marcos"][1] << '\n'; // Saída: l

Imprimindo valores em um loop, caso precise para alguma aplicação

for( auto m : mapa["Terminal"]  ){
  std::cout << m;
}

Todo o código dos exemplos acima com a saída final:

i#include <iostream>
#include <map>

int main(){
  std::map<const char*, std::string> mapa;
  
  mapa["Marcos"] = "Oliveira";
  mapa["Terminal"] = "Root";

  mapa["Terminal"] = "User";
  
  std::cout << mapa["Marcos"] << '\n';
  std::cout << mapa["Terminal"].size() << '\n';
  
  std::cout << mapa["Marcos"][1] << '\n'; // Saída: l

  for( auto m : mapa["Terminal"]  ){
    std::cout << m;
  }

  std::cout << '\n';
  return 0;
}

Saída final:

Oliveira
4
l
User

Além do size() outras funções que podem ser aplicadas: begin, cbegin, cend, clear, contains, count, crbegin, crend, emplace, emplace_hint, empty, end, erase, find, insert, lower_bound, max_size, rbegin, rend, swap e upper_bound.

A diferença entre begin() e cbegin() é que o begin() pode retornar um iterador ou um iterador constante, mas o cbegin() só retorna o iterador CONSTANTE . A mesma regra vale para os outros que possui esse c na frente .

O clear(), limpa o mapa retornando ao zero.

O empty() serve para verificar se está vazio ou não.

O emplace() insere em uma posição específica, assim como o insert() a diferença é o tipo de operação. E o emplace_hint() para tipos não modificáveis/irreversíveis .

Para mais informações sugiro ver esse link.


Por hoje é só, são pequenas doses diárias que farão sempre nos manter antenado com o C++ !

Acompanhe o cpp::daily

Deseja aprender C++ e criar seus programas Gráficos e para Terminal com portabilidade para Linux e Windows?

Então se inscreva nos nossos Cursos de C++ Moderno . Você aprender criar:

Acesse o endereço:

https://terminalroot.com.br/cpp/ e saiba mais!


cppdaily


Compartilhe


Nosso canal no Youtube

Inscreva-se


Marcos Oliveira

Marcos Oliveira

Desenvolvedor de software
https://github.com/terroo


Crie Aplicativos Gráficos para Linux e Windows com C++

Aprenda C++ Moderno e crie Games, Programas CLI, GUI e TUI de forma fácil.

Saiba Mais

Receba as novidades no seu e-mail!

Após cadastro e confirmação do e-mail, enviaremos semanalmente resumos e também sempre que houver novidades por aqui para que você mantenha-se atualizado!