Map Bidirecional em C++

O uso mais comum de um map é chave->valor, ou seja, unidirecional, a chave será indexada para que a busca seja mais rápida.

Exemplo de uso de Map

#include <map>
int main(){
    // declaração de um map e abaixo 3 atribuições
    std::map<int, double> _map;
    _map[1] = 12.2;
    _map[2] = 14.2;
    _map[5] = 7.9;
    return 0;
}

 

O Map Bidirecional tem a opção de chave->valor nas duas direções, assim transformando o valor em chave e chave em valor, conforme a imagem abaixo:
relation.and.pair

Como usar Boost BiMap?

#include <string>
#include <boost/bimap.hpp>

int main(){
    // declaração de um bimap ( nome <-> idade ) e abaixo 3 atribuições
    typedef boost::bimap< std::string, int > tbimap;
    typedef tbimap::value_type pos;
    tbimap _bimap;
    _bimap.insert(pos("Fernando", 28));
    _bimap.insert(pos("Maria", 45));
    _bimap.insert(pos("João", 60));

    // para recuperar a idade passando o nome
    int idade = _bimap.left.at("Fernando");

    // para recuperar o nome com a idade
    std::string nome = _bimap.right.at(28);
    return 0;
}

 

Como pode ver no exemplo, é bem simples usar o bimap.

Documentação

http://www.boost.org/doc/libs/1_64_0/libs/bimap/doc/html/index.html

Tem alguma dúvida ou sugestão, Deixe seu comentário!

Deixe um comentário