Map vs Multimap – C++

Nesse post vou apresentar 2 exemplos, um utilizando std::map e o outro std::multimap.

Qual a diferença?

O map é uma estrutura de dados que armazena chave e valor, sendo que a chave é única, portanto, a busca somente retornará um valor.

O multimap também é uma estrutura de dados que armazena chave e valor, mas a chave não é única, a busca continua sendo feita pela chave mas podendo encontrar mais de um valor.

Exemplos

std::map

#include ‹iostream›
#include ‹string›
#include ‹map›

int main()
{
    std::map ‹int, std::string› mp;
    mp[0] = "First";
    mp[1] = "Second";
    mp[2] = "Third";
    // sobrescreve o valor da chave 2
    mp[2] = "Fourth";

    for (auto ci = mp.begin(); ci != mp.end(); ci++) {
       std::cout ‹‹ ci->first ‹‹ " - " ‹‹ ci->second ‹‹ std::endl; 
    }
    return 0;
}

std::multimap

#include ‹iostream›
#include ‹string›
#include ‹map›

int main()
{
    std::multimap‹int, std::string› mp;
    mp.emplace(0, "First");
    mp.emplace(1, "Second");
    mp.emplace(2, "Third");
    mp.emplace(2, "Fourth");
    mp.emplace(1, "Fifth");

    for (auto ci = mp.begin(); ci != mp.end(); ci++) {
        std::cout ‹‹ci->first ‹‹ " - " ‹‹ ci->second ‹‹ std::endl; 
    }

    /* output
        0 - First
        1 - Second
        1 - Fifth
        2 - Third
        2 - Fourth
    */

    auto range = mp.equal_range(2);
    for (auto ci = range.first; ci != range.second; ci++) {
        std::cout ‹‹ci->first ‹‹ " - " ‹‹ ci->second ‹‹ std::endl; 
    }
    return 0;
}

Links de Referencia

http://en.cppreference.com/w/cpp/container/map
http://en.cppreference.com/w/cpp/container/multimap

Tem alguma dúvida ou sugestão? Deixe nos comentários!

Deixe um comentário