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

Dominando std::map em C++: Guia Completo com Exemplos de Código

O que é std::map?

Na Standard Template Library (STL) do C++, std::map é um container associativo que armazena elementos como pares chave-valor. Cada chave é única e o container mantém automaticamente os elementos ordenados de acordo com a função de comparação da chave (por padrão, std::less). Os valores podem ser de qualquer tipo e são acessados através de suas chaves correspondentes.

Por que Usar std::map?

Sintaxe

Declare um map com:

std::map<TipoChave, TipoValor> nomeMapa;

Exemplo:

std::map<std::string, int> mapaIdade;

Tipos Membro

Funções Embutidas

Iterando Sobre Elementos do Map

Iteradores dão controle total sobre ordem de travessia, que é sempre ordenada por chave.

#include <iostream>
#include <string>
#include <map>
using namespace std;
int main() {
    map<int, string> alunos;
    alunos.insert({200, "Alice"});
    alunos.insert({201, "João"});
    cout << "Tamanho do map: " << alunos.size() << endl;
    cout << endl << "Ordem padrão do map:" << endl;
    for (auto it = alunos.begin(); it != alunos.end(); ++it) {
        cout << it->first << ": " << it->second << endl;
    }
    return 0;
}

Saída:

Tamanho do map: 2

Ordem padrão do map:
200: Alice
201: João

Inserindo Dados no std::map

Use insert() para novas entradas; ele rejeita duplicatas silenciosamente. Para sobrescrever uma chave existente, use insert_or_assign().

#include <map>
#include <iostream>
using namespace std;
int main() {
    map<int, int> m{{1,3},{2,4},{3,5}};
    m.insert({5,6});        // adiciona novo par
    m.insert({1,8});        // ignorado, chave 1 já existe
    m.insert_or_assign(1,6); // atualiza chave 1 para valor 6
    cout << "Chave\tElemento\n";
    for (auto& p : m) {
        cout << p.first << '\t' << p.second << '\n';
    }
    return 0;
}

Buscando em um Map

Encontrar uma chave é direto com find(). Se a chave existe, o iterador retornado aponta para o elemento; caso contrário end() é retornado.

#include <iostream>
#include <map>
using namespace std;
int main() {
    map<int, string> alunos;
    alunos.insert({200, "Alice"});
    alunos.insert({201, "João"});
    if (auto it = alunos.find(201); it != alunos.end()) {
        cout << "Chave 201 tem valor: " << it->second << endl;
    }
    return 0;
}

Deletando Dados de um Map

Elementos podem ser removidos por chave ou por iterador. O método erase() invalida apenas iteradores apontando para o elemento apagado.

#include <iostream>
#include <map>
using namespace std;
int main() {
    map<string, int> meuMapa;
    meuMapa["vaca"] = 1;
    meuMapa["gato"] = 2;
    meuMapa["leao"] = 3;
    if (auto it = meuMapa.find("gato"); it != meuMapa.end()) {
        meuMapa.erase(it);
    }
    for (auto& p : meuMapa) {
        cout << p.first << ": " << p.second << endl;
    }
    return 0;
}

Saída:

leao: 3
vaca: 1

Resumo

Linguagem C

  1. Dominando Funções da Biblioteca Padrão C: Guia Prático
  2. Operadores em C++ Explicados: Tipos, Exemplos e Programas Práticos
  3. Laço do-while em C++: Sintaxe, Exemplos Práticos e Loops Aninhados
  4. Dominando Switch-Case em C++: Sintaxe, Uso e Exemplos Práticos
  5. Dominando Alocação Dinâmica de Arrays em C++: Guia Prático com Exemplos de Código
  6. Dominando Ponteiros em C++: Conceitos, Exemplos e Aplicações Práticas
  7. Sobrecarga de Operadores em C++: Guia Prático com Exemplos de Código
  8. Dominando std::list em C++: Sintaxe, Funções e Exemplos Práticos
  9. Funções em C++ Explicadas com Exemplos Práticos de Código
  10. C++ Struct vs Class: Diferenças Principais, Sintaxe e Melhores Casos de Uso